Laravel5のリリース早々躓いてしまいました

昨日(2015年2月5日)、待望のLaravel5がリリースされました。

そこで、早速、Laravel5をインストールして使用してみたのですが、インストール早々、躓いたので、皆さんも同じような事で躓かないように私の失敗談をご紹介します。同じような状況の方は参考にしてください。

フォルダ構成

Laravel5のフォルダ構成は下記のようになっています。

2015-02-06 17-38-22

 コントローラ

早速、新規のコントローラーを作成し、簡単なビューファイルを表示する為のコードを作成してみました。コントローラは、app/Http/Cotrollersフォルダ内に作成します。Laravel5は、名前空間の記述が必須ですので、手打ちでコントローラを作成するのは、ちょっと面倒です。そこで、コマンドプロンプトでコントローラを生成します。

php artisan make:controller SampleController

これで、app/Http/Controllersフォルダ内に、リソースフルコントローラのSampleControllerが生成されます。indexアクションに、ビューファイルを表示するコードを記述します。

<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SampleController extends Controller {
public function index()
 {
 return view('sample');
 }

ルーティング

ルーターの位置は、app/Httpフォルダ内にroutes.phpファイルがあります。デフォルトのルーティングは、WelcomeControllerのindexアクションと、homeControllerのindexアクション、そして、AuthControllerとPasswordControllerが登録されています。

2015-02-06 17-49-45

SampleControllerを登録するために、routes.phpに下記を追加します。

Route::resource('sample','SampleController');

app/resources/viewsフォルダにsample.blade.php(ビューファイル)を作成し、下記のような簡単なファイルを作成しました。

<html>
 <head>
 <title>初めてのLaravel5</title>
 </head>
 <body>
 <h1>Sampleページです</h1>
 </body>
 </html>

これで、ブラウザからアクセスすれば、「Sampleページです」と表示されるはずですが、表示されたのは、404エラー(ページが見つかりません。)でした。

2015-02-06 21-06-29

どこを何度見直しても、コードに間違いがないはずなのに、ページが表示されません。そこでドキュメントを再度読み直すと、ルートキャッシュの記述がありました。そうです。原因はルートキャッシュだったのです。

 ルートキャッシュの落とし穴

Laravel5はルートキャッシュを利用することにより、アプリケーションのルート登録が格段に早くなっています。只、ここが落とし穴になり、アプリケーション作成時に度々、404エラーに見舞われることになる可能性があります。

※ルートキャッシュとは、Route::controller()、やRoute::resource()等のルーティングの登録時間を短縮するために、app/Http/route.phpファイルを読み込む代わりに、キャシュされたルートファイルを利用する方法です。アプリケーションが大量のコントローラにより作成されている場合、かなりの威力を発揮します。

分かってしまえば、どうってことないのですが、これに気付かずに数時間も無駄にしてしまいました。

php artisan route:cache

コマンドプロンプトで、上記のおまじないをすれば、ルート登録が格段に早くなるからと言って、開発途中で上記のおまじないは唱えない方がいいでしょう。なぜなら、新しいコントローラーを登録する度に、上記のコマンドを入力する必要があるからです。

ですので、アプリケーションの作成途中なら、下記のコマンドを入力して、ルートキャッシュのファイルを削除しておいた方がいいでしょう。

php artisan route:clear

※私の場合、インストールしたばかりで、ルートキャッシュ生成のコマンドを入力したつもりはないのですが、何故かルートキャッシュファイルが生成されていたみたいです。

躓きながらも、何とかLaravel5に触れることができて、ワクワクしています。

これで、またしばらくは、Laravel5にかかりっきりになる日が続きそうです。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント

  1. typo より:

    Route::resource(‘sampel’,’SampleController’);

    Route::resource(‘sample’,’SampleController’);


コメントをどうぞ

このページの先頭へ