コントローラの作成
1 |
php artisan make:controller コントローラ名(UserController等) |
--resource
RESTベースでコントローラのメソッドを生成する事が可能です。なお、下記の場所にコントローラファイルが作成されます。
1 |
app/Http/Controllers/コントローラファイル名.php |
メソッドを書く
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function index(){ return view(‘viewファイル名’); } } |
DBからデータを取得する。
コントローラー側
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\モデル名; class TestController extends Controller { public function index(){ $変数 = モデル名::all(); //DBからデータを取得 return view('ビューのパス',compact(‘$変数’)); } } |
ビュー側
変数がコレクションなので下記のようにforeach構文でループを回します。
1 2 3 |
@foreach($変数s as $変数) {{$変数->カラム名}}<br> @endforeach |
ファットコントローラの解消
コントローラーはできるだけ簡潔に記述する事が推奨されています。なので肥大化してきたと思ったら下記のようなディレクトリを作成し、その中に新しいクラスを作成しましょう。
1 |
app/Services |
下記のような感じで静的メソッドとして肥大化したコントローラの内容を切り出すと良いでしょう。
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App\Services; class CheckFormData { public static function メソッド名() { } } |
ルーティングの基本
routesフォルダにあるファイルを編集していきます。
ビューファイルにそのまま飛ばす場合
1 2 3 |
Route::get('/', function () { return view(‘bladeのファイル名’); }); |
bladeファイル
下記の場所にあります。
1 |
app/resources/views/ファイル名.blade.php |
コントローラに流したい場合
1 |
Route::get(‘アクセスするURL’,’コントローラ名@メソッド名’); |
記述例
1 |
Route::get(‘/test’,’TestController@index’); |
nameメソッド
nameメソッドを使うとビュー側で楽に記述できるようになるのでできるだけnameメソッドはルーティングでつけるようにしましょう。
1 |
Route::get(‘/test’,’TestController@index’)=>name('test'); |
blade側で{{route(名前)}}のようにヘルパー関数を使用すれば簡潔にルーティング指定する事が可能になります。
RESTfulなルーティングにしたい場合
完全なRESTfulにしたい場合
1 |
Route::resource('コントローラ名(users)','コントローラ名(UserController)'); |
RESTfulから一部絞りたい場合
1 2 3 |
Route::resource('コントローラ名(users)','コントローラ名(UserController)')->only([ 'アクション名1', 'アクション名2' ]); |
認証しないとログインできないようにするには?
下記のようにRoute::groupでラッピングして、middlewareにてauthライブラリを指定します。
1 2 3 |
Route::group(['prefix' => 'コントローラ名(user等)', 'middleware' => 'auth'],function(){ Route::get('アクション名','コントローラ名(UserController等)@アクション名'); }); |
バリデーションに関する知識
リクエストを作成する。
下記コマンドを実行してリクエストを作成します。
1 |
php artisan make:request リクエスト名 |
authorizeをtrueにする
認証しているかどうかを判定するauthorizeがfalseを返すようになっていると処理自体が動かないので下記のようにtrueを返すようにします。
1 2 3 4 |
public function authorize() { return true; } |
バリデーションを記述する。
下記のような感じで記述していきます。
1 2 3 4 5 6 7 8 |
public function rules() { return [ // 'フィールド名1' => 'required|string|max:20', 'フィールド名2' => 'required|string|max:50' ]; } |
バリデーションの代表的なメソッド
required
必須項目
string
文字
max:文字数
最大文字数
unique:モデル名(users等)
対象のモデル内で一意になっている事。
email形式であること
url
URL形式である事
nullable
NULLを許可します。
accepted
チェックボックスの場合にチェックしているかどうか。
コントローラー側で使う
1 |
use App\Http\Requests\作成したリクエスト名; |
バリデーションをかけたいアクションのrequestクラスをRequestから作成したRequestクラスに書き換えます。
1 2 3 4 |
public function store(作成したリクエストクラス $request) { 処理 } |
「Form」のサーバー側の処理
前提知識
formからリクエストを行う場合はメソッドはGETとPOSTしか使えないです。(なので、PUTとかDELETEとかのメソッドは使えません。)、なので、削除等を行う場合でもどちらかのメソッドから選択することになります。
index
一覧の取得
1 2 3 |
use App\Models\モデル名; $変数 = モデル名::all(); |
store、update
フォームからPOSTされたデータを受けるために使用します。storeはRailsで言えばcreateを指します。
データの取得
1 2 3 4 |
public function store(Request $request) { $変数 = $request->input('フィールド名'); } |
データのDB保存
1 2 3 4 5 6 7 8 |
use App\Models\モデル名(User等); public function store(Request $request) { $変数名 = new モデル名(User等); $変数名->フィールド名 = $request->input('フィールド名'); $変数名->save(); } |
updateの場合
基本的にはstoreと同じですが操作するオブジェクトは新規で作成するのでなく、下記のように既存のオブジェクトを使うようにします。
1 2 3 4 5 6 |
public function update(Request $request, $id) { $変数名 = new モデル名(User等); ↓ $変数名 = モデル名::find($id); } |
show
findを使ってデータを取得します。
1 2 3 4 |
public function show($id) { $変数 = モデル名::find($id); } |
この記事へのコメントはありません。