Laravel コントローラの基本的な使い方
Laravelではコントローラを以下のフォルダに配置します。
\{Laravelプロジェクト}\app\Http\Controllers
コントローラの基本
Controller
を継承したクラスを生成します。クラス名はコントローラ名Controllerとします。
クラス内にルーティングから実行されるメソッド(アクションメソッド)を実装します。
use App\Http\Controllers\Controller;
class コントローラ名Controller extends Controller
{
public function アクションメソッド() {
// 処理.
}
}
コンストラクタ
通常のPHPクラスと同じです。
public function __construct() {
// 処理
}
コントローラで画面を表示する方法
ビューテンプレート(Blade)を使用する場合は下記のとおり。パラメータは第2引数に連想配列で指定します。
public function show() {
return view("ビューテンプレート名", []);
}
直接出力
ビューテンプレート(Blade)を使用せずに直接HTMLを出力することも可能です。
public function show() {
print("<h1>Laravel</h1>");
return null;
}
パラメータの受け取り
アクションメソッドでパラメータを受け取りたい場合、ルーティングでパラメータを記述します。ルーティングにパラメータを記述しないとエラーになります。
- URIに
{パラメータ}
を追加する
Route::get("/show/{id}", "WebApiController@show");
- コントローラのアクションメソッドで引数を追加する
class WebApiController extends Controller
{
public function show($id) {
}
}
パラメータが複数の場合は後ろに増やします。(/show/{id}/{name}
に対してshow($id, $name)
)
Requestを使ったパラメータの受け取り
アクションメソッドの引数をRequest $request
とすると全てのパラメータを一括で取得できます。
パラメータは$request->パラメータ名
で参照します。パラメータ名はルーティングの記述に依存します。
リダイレクト
ヘルパー関数のredirect()
を使い、アクションメソッドからリダイレクトを行います。
アクション指定
action()
を使いコントローラクラス名@アクションメソッド
で指定します。
return redirect()->action('WebApiController@show');
パラメータは第2引数に連想配列で渡します。
return redirect()->action('WebApiController@show', ['id' => 1]);
サイト内のページへリダイレクト
引数のuriはルーティングで指定した値です。
return redirect('/show');
任意のURLへリダイレクト
https://www.yahoo.co.jp/へリダイレクトする場合
return redirect('https://www.yahoo.co.jp/');
または
return redirect('//www.yahoo.co.jp/');
HTTPエラーレスポンス
コントローラでHTTPエラーコードを生成するにはヘルパー関数のabort()
を使用します。
abort()
は例外を発生させるため、abort()
以降のソースコードは実行されません。
コントローラでエラー時に404ページを表示
abort(404);
コントローラでエラー時に400を返す
abort(400);