🛸
Laravel 学習備忘録☺
Laravel学習備忘禄
プロジェクト名設定
PROJECT_NAME=learn_laravel
コンテナー削除
docker rm ${PROJECT_NAME}_laravel.test_1 > /dev/null 2>&1
docker rm ${PROJECT_NAME}_mysql_1 > /dev/null 2>&1
docker rm ${PROJECT_NAME}_redis_1 > /dev/null 2>&1
docker rm ${PROJECT_NAME}_mailhog_1 > /dev/null 2>&1
docker rm ${PROJECT_NAME}_selenium_1 > /dev/null 2>&1
docker rm ${PROJECT_NAME}_meilisearch_1 > /dev/null 2>&1
ネットワーク削除
docker network rm ${PROJECT_NAME}_sail > /dev/null 2>&1
ボリューム削除
docker volume rm ${PROJECT_NAME}_sail-meilisearch > /dev/null 2>&1
docker volume rm ${PROJECT_NAME}-app_sail-mysql > /dev/null 2>&1
docker volume rm ${PROJECT_NAME}-app_sail-redis > /dev/null 2>&1
プロジェクト作成
curl -s "https://laravel.build/${PROJECT_NAME}" | bash
作成したプロジェクトディレクトリの中へ移動
cd ${PROJECT_NAME}
コンテナー起動
./vendor/bin/sail up
ルーティング設定
トップへのアクセスをリダイレクト
Route::redirect('/', '/todo');
welcomeページを移動
Route::get('/welcome', function () {
return view('welcome');
});
TODOリスト
Route::get('/todo', function () {
return 'TODOリスト';
});
TODO詳細
Route::get('/todo/{id}', function ($id) {
return 'TODO詳細 ' . $id;
});
TODO追加
Route::post('/todo', function () {
return 'TODO追加';
});
TODO更新
Route::put('/todo/{id}', function ($id) {
return 'TODO更新 ' . $id;
});
TODO削除
Route::delete('/todo/{id}', function ($id) {
return 'TODO削除 ' . $id;
});
たーみなるで、
curl を使用して、想定通りの動きを
しているのかの確認をする。
リダイレクト
curl -X GET http://localhost
Welcome
curl -X GET http://localhost/welcome
TODOリスト
curl -X GET http://localhost/todo
TODO詳細
curl -X GET http://localhost/todo/1
TODO追加
curl -X POST http://localhost/todo
TODO更新
curl -X PUT http://localhost/todo/1
TODO削除
curl -X DELETE http://localhost/todo/1
POSTは
CSRF対策機能が作動してるのでOK
コントローラーの作成
app/Http/Controllers ディレクトリ下に
配置します。
Artisanコマンド使用
./vendor/bin/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
{
public function show()
{
// ここに処理を書いていくことになる
}
}
ルーター設定
コントローラーをルーターに設定
localhost/sample にアクセスした時に
作成したコントローラーのshowメソッドが
呼び出されるようにしましょう。
Route::get('/sample', 'App\Http\Controllers\Sample\IndexController@show');
ddヘルパー関数を使用して、
表示させる。
ddヘルパーは var_dump()的なもの。
引数の値を表示して、処理を中断する関数
class IndexController extends Controller
{
public function show()
{
dd('Sampleページだよ\(^o^)/');
}
}
IDをパラメーターとして受け取るルートを追加する
Controller:
public function detail($id)
{
dd("IDは、${id}です!");
}
web.php:
Route::get('/sample/{id}', 'App\Http\Controllers\Sample\IndexController@detail');
http://localhost/sample/2 へアクセス
IDは2です!
的な表示が出ればOK
シングルアクションコントローラーの生成
./vendor/bin/sail artisan make:controller Todo/IndexController --invokable
--invokable オプションを付加することで、シングルコントローラー用のコントローラーが生成されます。
Todo/IndexController
<?php
namespace App\Http\Controllers\Todo;
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 'TODOリスト表示予定!';
}
}
ルートの設定:
Route::get('/todo', 'App\Http\Controllers\Todo\IndexController');
これでも可
Route::get('/todo', App\Http\Controllers\Todo\IndexController::class);
Discussion