Laravel3 を WebMatrix3 で開発しロリポップで公開する no.5 【Controller と View の分離に挑戦】

本日1ついに Larave4 がリリースされてしまいました。とはいえ、ここではこのまま Laravel3 の使用を前提としたまま進めて行きたいと思います。

今回はコントローラとビューの切り離しを行いたいと思います。Laravel3 では標準で Blade テンプレートエンジンを使えるようになっていますので、これを使って行きたいと思います。

ビューを格納する場所は、 aplication/views 以下です。ここに新規に viewtest.blade.php を作成してみましょう。ソースは以下のとおりです。

これは Larave3 のビュー設置テストです。 <br>
{{ date(\"Y:m:d H:i:s\") }}

次に、laravel3test.php を下記のように修正しましょう。

<?php
class Laravel3test_Controller extends Base_Controller
{
    public function action_index()
    {
        echo \"これは Larave3 のコントローラ設置テストです。\";
        echo \"<br />\";
        echo date(\"Y:m:d H:i:s\");
    }
 
    public function action_viewtest()
    {
        return View::make(\'viewtest\');
    }
}

そうです。新たに action_viewtest メソッドを追加し、そこから今回作成したビューを呼び出しています。ビュー名は .blade.php を省略した形になっています。それでは一旦表示してみましょう。http://localhost:XXXXX/public/index.php/laravel3test/viewtest {{}} で括った文章は PHP プログラムとして扱われます。制御構文の書き方などは別途用意されています。

views ディレクトリの中に bladetest ディレクトリを作成し、その中に viewtest.blade.php を移動してください。再度表示するとエラーとなりますので、 laravel3test.php 内の action_viewtest メッソッド内にある View::make メソッドへの引数を bladetest.viewtest へ変更して、確認してみてください。元通り表示されるようになったと思います。そうです、ディレクトリ構成は 「.」 で繋ぐことで表現することができます。

次に、views 直下に testtemplate.blade.php を作成してください。ここに簡単なテンプレートの雛形を書いていきます。内容は以下のとおりです。

<!DOCTYPE html>
<html lang=\"en\">
    <head>
        <meta charset=\"utf-8\" />
        <title></title>
    </head>
    <body>
@yield(\'contents\')
     
    </body>
</html>

次に先程 bladetest ディレクトリに移動した viewtest.blade.php を以下のとおりに変更します。

@layout(\'testtemplate\')
 
@section(\'contents\')
これは Larave3 のビュー設置テストです。
<br>
{{ date(\"Y:m:d H:i:s\") }}
@endsection

ページを表示しても外見上の変化はありませんが、出力されたHTMLのソースを表示してみると、 testtemplate.blade.php に viewtest.blade.php の内容が組み込まれたかのような出力内容となっています。

それでは今回はここまで。

  1. アメリカ時間では昨日:2013/5/28 []
カテゴリー: Laravel3, Web, WebMatrix, ロリポップ タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です