laravel5.1のルーティング、コントローラ作成とおまけでHTML5
laravel5.1を久しぶりに触ってるのですが、触ってみるとcakeと勝手が違っていて、
「あれ、どうやってたっけ?」と思うところが散見したので、学習記録です。
やはりartisanがあるおかげでcakeよりもrailsに近いフレームワークと言えるのではないでしょうか。
laravelのmodel作成
laravel5.1ではmodelはartisanで作ると、app直下にmodelが作られる。
tinkerを使うことで、対話的にmodelを作成できる。またtinkerで作ったデータをsaveでRDBMSにデータとして突っ込める。
抽象化されたfilesystemモジュール
filesystems.phpを使うと、扱うファイルストレージを簡単に決められる。S3やlocalなど。 S3やRackspaceドライバーを使用する際は、それに適合するパッケージをcomposerで入れる必要があります。 普通にファイルを保存して公開したい場合はpublic。
php artisan storage:link
とすることで、「public/storage」から「storage/app/public」へシンボリックリンクが貼られます。
laravel5.1の.envの扱い
ホームディレクトリ直下に.envがありますが、これを触らないとhomesteadってDBへアクセスしようとします。一番最初にはまる所。また、.envは.gitignoreに追加されているのでgit addできません。まぁその方が安心ですね。
laravel5.1とlaravel5.4のルーティング
5.4ではroutes.phpがapp直下からなくなって、routesディレクトリ配下のweb.phpにルーティングを設定するようになっています。
コントローラの作成
でコントローラが作成できます。できたコントローラの中身は、index()やcrete()といった雛形が自動的に作られています。 これらのデフォルトメソッドが必要ないときは下記のように指定します。
routes.phpに下記を追加。
Route::get('about', 'PagesController@about');
マークアップを書いたabout.blade.phpをviews/pagesの下に置いてあげます。
localhost:8000/aboutにアクセスすると、
BadMethodCallException in Controller.php line 283:
Method [about] does not exist.
てのが出ました。あれルータ間違えたか・・?とかいろいろ確認していると、
エラーの内容通り、メソッドがないよってことでした。function about()を付け加えると、無事ページが表示されました。ちなみにこのBadMethodCallExceptionはvendor/laravel/framework/src/Illuminate/Routing/Controller.phpに書かれています。親のControllerクラスでメソッドがちゃんとあるかの確認処理が走ってるわけですね。
HTML5
base要素・・・ドキュメントにおける全ての相対URLの基準となるURLと、リンク先ドキュメントの開き方を指定する 要素である。headタグ内に一つだけ配置できる。 (リンク先ドキュメントの開き方は、target属性に指定する。)
noscript要素・・・javascriptが使えない環境での挙動を指定できる。
menuとmenuitemタグは最新のfirefoxでないChrome55などは対応していない。
参考サイト