コントローラ作成
Laravelプロジェクト直下で下記コマンドを実行すると、
基本コード付きのファイルが作成される。
php artisan make:controller HelloController
Laravelプロジェクト\app\Http\Controllers\HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
//
}
下記が名前空間
namespace App\Http\Controllers;
下記がインポート
use Illuminate\Http\Request;
コントローラ割当
HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index() {
return <<< EOF
<h1>Test</h1>
<p>Hello</p>
EOF;
}
}
web.php
Route::get('/hello','App\Http\Controllers\HelloController@index');
// Route::get('/hello','HelloController@index');
web.phpで割り当てるコントローラのパスはおそらくルートパスによって変わる。
使用環境はxampp使ってルートパスを変更していない状態。
ルートパラメータ使用
HelloController.php
public function index1($name='name none', $age='age none') {
return <<< EOF
<h1>{$name}</h1>
<p>{$age}</p>
EOF;
}
web.php
Route::get('/hello1/{name?}/{age?}','App\Http\Controllers\HelloController@index1');
シングルアクションコントローラ
HelloControllerに__invoke()だけ存在するように変更し、ルーティングも変更。
HelloController.php
class HelloController extends Controller
{
public function __invoke()
{
return <<< EOF
<h1>Test</h1>
<p>Hello</p>
EOF;
}
}
web.php
Route::get('/hello','App\Http\Controllers\HelloController');
Request, Response
Request, Responseをindexに追加するだけでインスタンス生成される。(DI)
HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class HelloController extends Controller
{
public function index(Request $request, Response $response) {
$html = <<<EOF
<h3>Request</h3>
<pre>{$request}</pre>
<h3>Response</h3>
<pre>{$response}</pre>
EOF;
$response->setContent($html);
return $response;
}
}
web:php
Route::get('/hello','App\Http\Controllers\HelloController@index');
用語
参考