皆さんこんにちは、
今、WebアプリケーションをPHP言語で作成しています。
そこでroutesの設定をすると思うのですが、ここで失敗してしまったので、その事例を備忘録として書き留めておきたいと思います。
スポンサードリンク.(Sponsored Link)
Laravelの使用
私はWebアプリケーション作成するにおいて、開発をしやすくするためのフレームワークを使うことになります。そして、私は、Laravelを使っています。
Laravelを使うと、ブラウザーから入力→Router→Controllerを選択→Modelからデータの取得と処理→Viewで表示(リダイレクト又はレンダリング)という流れをスムーズに処理することができます。
というのが私の理解なのですが・・・
Router, Controller, Viewの関係
そして、routerとController、そして、viewの関係をまず理解しなくてはいけません。
そこで、例えば、Booklistという本の登録・参照・編集・削除ができるWebアプリケーションを例にその関連図を作ってみました。
▲これぐらいの図を作成すると、全体の流れがわかりやすいかなと思います。
routes.phpの設定
上の流れに従ってroutes.phpの設定をします。
app/Http/routes.php の記載の仕方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// CRUD処理用のルーティング設定 Route::get('books/{id}', 'BooksController@show'); Route::post('books', 'BooksController@store'); Route::put('books/{id}', 'BooksController@update'); Route::delete('books/{id}', 'BooksController@destroy'); // index: showの補助用一覧ページ Route::get('books', 'BooksController@index'); // create: 新規作成用のフォームページ Route::get('books/create', 'BooksController@create'); // edit: 更新用のフォームページ Route::get('books/{id}/edit', 'BooksController@edit'); |
上の記述を一行で書く場合は
1 |
Route::resource('messages', 'MessagesController'); |
と書きます。
そして、ルーティングの設定を確認してみたところなんかおかしいなと思いました。
Nameのカラムには、URLの設定が入らなくてはいけないのですが、それが全くないのです。実際にアプリケーションを実行してみると、案の定エラーになりました。
それで、再度、ルーティングのやり直しをしました。
1 2 3 4 5 6 7 8 9 10 11 |
Route::get('books/{id}', 'BooksController@show')->name('books.show'); Route::post('books', 'BooksController@store')->name('books.store'); Route::put('books/{id}', 'BooksController@update')->name('books.update'); Route::delete('books/{id}', 'BooksController@destroy')->name('books.destroy'); Route::get('books', 'BooksController@index')->name('books.index'); Route::get('/', 'BooksController@index')->name('books.index'); Route::get('books/create', 'BooksController@create')->name('books.create'); Route::get('books/{id}/edit', 'BooksController@edit')->name('books.edit'); |
上のように、最初に設定したRoute::get( … )の右横に、”->name(‘books.show’);”と、nameの設定を書き込んでみました。
そして、もう一度、routesの設定を確認してみました。
今度は、NameのカラムにきちんとURLの情報が入っています。
これを一行の記述の方でroutes.phpに書くと、nameの設定は必要ありません。
こんなふうにして、routesの設定ができたということになります。
ここが肝心なので、皆さんもきちんと設定できるといいですね。ではでは
スポンサード・リンク (Sponsored Link)....