Memo

メモ > 技術 > フレームワーク: Laravel9 > アプリケーションの作成

アプリケーションの作成
■コントローラー作成の検証
$ sail artisan make:controller Sample/IndexController
以下のファイルが作成される app/Http/Controllers/Sample/IndexController.php
<?php namespace App\Http\Controllers\Sample; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class IndexController extends Controller { // }
以下のように変更してみる app/Http/Controllers/Sample/IndexController.php
<?php namespace App\Http\Controllers\Sample; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class IndexController extends Controller { public function show() { return 'Hello'; } public function showId($id) { return 'Hello ' . $id; } }
ルーティングも変更 routes/web.php
Route::get('/sample', [\App\Http\Controllers\Sample\IndexController::class, 'show']); Route::get('/sample/{id}', [\App\Http\Controllers\Sample\IndexController::class, 'showId']);
以下にアクセスして表示を確認する http://laravel.local/sample/ http://laravel.local/sample/10 ■アプリケーションの作成 シングルアクションコントローラーを作成
$ sail artisan make:controller Article/IndexController --invokable
以下のファイルが作成される(「invoke」は、ここでは英語の「呼び出す」の意味で使われていると思われる) app/Http/Controllers/Article/IndexController.php
<?php namespace App\Http\Controllers\Article; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class IndexController extends Controller { /** * Handle the incoming request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function __invoke(Request $request) { // } }
以下のように変更してみる app/Http/Controllers/Article/IndexController.php
<?php namespace App\Http\Controllers\Article; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class IndexController extends Controller { /** * Handle the incoming request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function __invoke(Request $request) { return 'Article'; } }
ルーティングも変更 routes/web.php
Route::get('/article', \App\Http\Controllers\Article\IndexController::class);
以下にアクセスして表示を確認する http://laravel.local/article/ ビューに対応 app/Http/Controllers/Article/IndexController.php
public function __invoke(Request $request) { return view('article.index', [ 'name' => 'Laravel', 'code' => '<script>console.log(\'Laravel\');</script>', ]); }
resources/views/article/index.blade.php
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Article</title> </head> <body> <h1>Article</h1> <p>{{ $name }}</p> {!! $code !!} </body> </html>
以下にアクセスして表示を確認する http://laravel.local/article/

Advertisement