メモ > 技術 > フレームワーク: 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/