Laravel の設定

さくらのレンタルサーバーに Laravel をインストールすることができたら、次は設定です。

①ルーティングを機能させる

②データベースマイグレーションする

③コントロールとビューを連携させる

の順番に解説していきます。

①ルーティングを機能させる

 さくらのレンタルサーバーで、Laravel のルーティング設定を機能させるためには、
.htaccess の記述を変更する必要があります。

下記のファイルを編集してください。
[public/.htaccess]

<IfModule mod_rewrite.c>
// [以下を削除]
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
// ここまで

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

②データベースマイグレーションする

 Laravel をデータベースに接続します。

下記のファイルを編集してください。
[.env]

DB_CONNECTION=mysql
DB_HOST=mysql[xxx].db.sakura.ne.jp
DB_PORT=3306
DB_DATABASE=[database_name]
DB_USERNAME=[user_name]
DB_PASSWORD=[password]

コマンドを打ちます。
php artisan migrate

③コントロールとビューを連携させる

 簡単なアプリケーションを実装します。

 

a. ルーティングを設定します。

 

b. コントロールを追加して、ロジックを書きます。

 

c. ビューを用意して、コントロールからデータを受け取ります。

 
 前提とする設定内容

[Laravel の編集ディレクトリ] = /home/[user_name]/www/[作業用ディレクトリ]
[Laravel のプロジェクトディレクトリ] = /home/[user_name]/www/[作業用ディレクトリ]/[Laravelプロジェクト]
[Laravel の公開ディレクトリ] = /home/[user_name]/www/[作業用ディレクトリ]/[Laravelプロジェクト]/public/ ・・・ welcome画面が見られるディレクトリのこと

以下、hogehoge という名前の機能を実装する例示

[作成するアプリケーションのルーティング] = http://[your_domain]/[作業用ディレクトリ]/[Laravelプロジェクト]/public/[hogehoge]/index/{id}/ ・・・{id}は、パラメータ変数。アドレスバーに入れた URL の id によって、表示が変わる。
[作成するアプリケーションのコントローラー] = [hogehoge]Controller.php というファイル。
[作成するアプリケーションのビュー] = [hogehoge].blade.php というファイル。

[利用するデータベースのテーブル名] = table_name
[利用するデータベースのカラム名] = column_name

[コントローラーとビューの間の受け渡し変数] = msg

a. ルーティングを設定します。

URL を叩いた時に、実際に呼ばれるメソッドを紐づけています。
下記のファイルを編集してください。

[routes/web.php]


use Illuminate\Support\Facades\Route;

// [以下を追加]
use App\Http\Controllers\[hogehoge]Controller;
// ここまで

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

// [以下を追加]
Route::get('[hogehoge]]/index/{id}', [[hogehoge]Controller::class, 'index']);
// ここまで
// ここでは、[hogehoge]]/index/{id} を叩くと、[hogehoge]Controller.php に記述されたクラスの index メソッドが呼ばれることを定義している。

b. コントロールを追加して、ロジックを書きます。

 [hogehoge]Controller.php を追加して、ロジックを書きます。
コマンドを叩くと自動的に作ってくれます。

php artisan make:controller [hogehoge]

下記で、table_name のテーブルのデータをごっそり持ってきます。

$items = \DB::table('[table_name]')->get();

下記で、データリーダーから特定のカラムにアクセスることができます。

$item->[column_name]

下記のファイルを編集してください。
[app/Http/Controllers]


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class lesson_coachController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index($id)
{
// [ここから追加]
$items = \DB::table('[table_name]')->get();
$name;

foreach ($items as $item)
{
$name = $name . $item->[column_name] . '
';
}

$param = ['msg' => 'Hello koneko koneko' . $id . $name];

return view('lesson_coach', $param);
// ここまで
}
}

c. ビューを用意して、コントロールからデータを受け取ります。

 views ディレクトリ内に、welcome.blade.php というファイルがあります。
まず、このファイルのコピーを作ってください。そして、名前を変更します。[hogehoge].blade.php です。
そして、下記のように編集します。
{{ $msg }} を追記するだけです。
body 内は、ごっそり削って、追記する文だけを書きました。見やすくなるのでそっちのほうがいいと思います。

下記のファイルを編集してください。
[[hogehoge].blade.php]

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1>

<title>Laravel</title>

<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">

</head>
<body class="antialiased">
// [以下を追加]
{{ $msg }}
// ここまで
</body>
</html>