PhpStormで始めるLaravel Framework (Controller/View編)

      2016/03/03

>前回の記事
PhpStormで始めるLaravel Framework

今日はLaravel FrameworkのControllerの使い方を解説しようとおもいます。
まずは、空のControllerクラスを作ってみましょう。

Controllerクラスを作るには、artisanコマンドを実行する必要があります。
PhpStormの場合「View > Tool Windows > Terminal」のTerminalウィンドウからコマンドが実行できるので今回もこれを使います。
※「View > Tool Buttons」を有効にしておくと、ワンタッチでTerminalが使えるので便利です。

Terminalから、以下のコマンドを実行します。

php artisan make:controller WelcomeController

上記コマンドを実行すると「Http/Controllers」の配下にWelcomeController.phpファイルが作成されます。
作成したクラスにはメソッドがまだないので、とりあえず以下のようにindexメソッドを作ってみましょう。

class WelcomeController extends Controller
{
    public function index(){
        echo "This is index method.";
    }
}

次にroutes.phpを編集します。
このファイルの中で、Controllerファイルと実際のURLパスのマッピングを行います。
routes.phpの中にある以下の記述を・・

Route::get('/', function () {
    return view('welcome');
});

以下に書き換えて下さい。

Route::get('/','WelcomeController@index');

書き換えたら、ブラウザからlocalhostにアクセスしてみてください。
「This is index method.」と表示されていたら成功です。
※publicディレクトリがDocumentRootに設定されていない場合は、前回の記事を参考に設定を済ませておいてください。

Route::get('/','WelcomeController@index');
の記述により、「/」(ルートパス)にアクセスされた場合にWelcomeControllerクラスのindexメソッドが実行されるように動作します。
また、「get('/'」のところを例えば「get('/hogehoge'」にすると「http://localhost/hogehoge」にindexメソッドがマッピングされるようになります。
ちなみに、routesの設定後に以下のコマンドを実行するとマッピングされているパスとControllerの一覧を確認することができます。

php artisan route:list

以上が、routes.phpの初歩的な記述方法です。
他にも記述の仕方は色々あるので、必要に応じて他の記述方もgoogle等で調べて書き換えてみて下さい。

さて、こんどはWelcomeControllerの方に戻り、indexメソッドを以下のように書き換えて下さい。

class WelcomeController extends Controller
{
    public function index(){
        return view('welcome');
    }
}

上記に変更後、localhostにアクセスすると、「Laravel 5」と表示されたと思います。
Laravelでは、コントローラーからview関数の戻り値をreturnすると、指定したビューが表示されるような仕組みになっています。

return view('welcome');

今回のように記述した場合、「resources/views/welcome.blade.php」がビューとして呼び出され、画面に表示されます。

Laravelでは「blade」と呼ばれるテンプレートエンジンが使われています。
welcome.blade.phpビューでは、ただのhtmlをそのまま表示しているだけですので少し書き換えてみましょう。

まずは、WelcomeController.phpです。

class WelcomeController extends Controller
{
    public function index(){
        $zahlen = array('Eins', 'Zwei', 'Zehen!!');
        return view('welcome', ['zahlen' => $zahlen]);
    }
}

view関数の第2引数に変数を渡すことにより、View内で利用することができます。
次にwelcome.blade.phpです。

@foreach($zahlen as $zahl)
    <p>Meine Zahl ist... <b>{{ $zahl }}</b></p>
@endforeach

bladeの繰り返し文foreachを利用しています。
変数の中身を表示したい場合は二重中括弧「{{}}」で囲みます。

これで、Controller内で作成した配列の中身がviewの中で展開されて画面に表示されたと思います。

いかがでしたでしょうか?
これで、LaravelでController内で処理した結果を画面に表示させる事が出来るようになりました。
次回はModelの使い方を解説しようと思います。

>次の記事
PhpStormで始めるLaravel Framework (Model編)

 - 技術系(サーバーサイド) , , , , ,