Laravel インストール
composerからインストール
※ [C:\myProject\hoge\main\{インストール先}]の場合は[main]でターミナルを開く
以下コマンドを叩きます。
[Laravel12]の画像が見えれば成功です。 また以下を叩けばバージョン情報が確認できます。
ディレクトリ構造を変更する
○ デフォルト構造
|
+----- [app等]
+----- [public]
|
+----- [index.php]
しかし、複数のコンテキストを同一サーバで運用したい場合は、以下の様な構造にしたいと思います。
|
+----- [laravel_12]
| |
| +----- [app等]
+----- [webroot]
|
+----- [laravel_12] ※ [public]内のファイルを全て移行する
| |
| +----- [index.php]
+----- [hogeApp]
|
+----- [index.php]
[localhost/hogeApp/index.php]とすれば、まったく違うアプリを起動できます。
<?php
$CHANGE = '/../../laravel_12';
use Illuminate\Foundation\Application;
use Illuminate\Http\Request;
define('LARAVEL_START', microtime(true));
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
require $maintenance;
}
#require __DIR__.'/../vendor/autoload.php';
require __DIR__. $CHANGE . '/vendor/autoload.php';
/** @var Application $app */
#$app = require_once __DIR__.'/../bootstrap/app.php';
$app = require_once __DIR__ . $CHANGE . '/bootstrap/app.php';
$app->handleRequest(Request::capture());
※ {laravel_12}は、コンテキスト名となるので適宜読み替えてください。
public function publicPath($path = '')
{
#return $this->joinPaths($this->publicPath ?: $this->basePath('public'), $path);
return $this->joinPaths($this->publicPath ?: $this->basePath('laravel_12'), $path);
}
ルーティングの設定をしよう
ルーティング情報は『routes\web.php』ファイルに記述します。
例)
コードの内容は以下となります。
・『HogeController::class』が発火し、関数『index』がコールされます。
・『name』をメソッドチェーンで繋ぎ、このルートの名前を付ける事ができます。
// [get][post]アクションを許容する
Route::match(['GET', 'POST'], '/', [App\Http\Controllers\HogeController::class, 'index']);
// パラメータを「hoge」「foo」を渡す(※パラメータは必須となる)
Route::get('/index/{hoge}/{foo}', [App\Http\Controllers\HogeController::class, 'index']);
// パラメータを「hoge」「foo」を渡す(※パラメータは任意となる)
Route::get('/index/{hoge?}/{foo?}', [App\Http\Controllers\HogeController::class, 'index']);
// パラメータに条件を付ける
Route::get('/index/{hoge}', [App\Http\Controllers\HogeController::class, 'index'])->where(['hoge' => '[0-9]+']);
コントローラを作ろう
Route::get('/hoge', [App\Http\Controllers\HogeController::class, 'index'])->name('hoge.index');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HogeController extends Controller {
public function index(Request $request) {
return view('hoge/index', []);
}
}
画面を表示するためのパスとテンプレート名です。
ビューを作ろう
<html>
<head>
<title>ららべる</title>
</head>
<body>
Hoge!!
</body>
</html>
次に画面名『index』に対応する『index.blade.php』を作成します。
結果を確認しよう
○ ディレクトリ構造がそのままの場合





上記2ファイルを修正しますが、フレームワークの処理で稀にエラーとなるケースが発生します。
症状は『publicディレクトリがないよ~』という内容です。
[public]ディレクトリは既に[laravel_12]へリネームしているため、正確な内容は以下です。
『[webroot]である[laravel_12]が、パス[~\app]直下にありません』
この事象は「npm」コマンド等で、中間モジュールをインストールしたりすると発生したりします。
回避策としては、[~\app\laravel_12]を本当に作成する事ですが、ここを[webroot]には出来ません。
従って【シンボリックリンク】を設定する事で回避します。
パス[~\app]のあるディレクトリで『管理者権限』でターミナルを立ち上げ、以下を叩きます。
mklink /D {参照するパス} {実際に存在するパス}
例)
mklink /D laravel_12 C:\MyProject\hoge\webroot\laravel_12