6

まっすぐなphpを使用してビューロジックを設定する方が効率的です。ブレードはかっこいいですが、私には向いていません。私はすべてのBlade固有の例とドキュメントをphpだけに翻訳しようとしています。View :: make()の配列内のビューにすべての変数を割り当てる必要があるという事実は好きではありません。私はこれまでにこれらすべてを見つけました。

controllers / home.php:

class Home_Controller extends Base_Controller {

    public $layout = 'layouts.default';

    public function action_index()
    {
        $this->layout->name = 'James';
        $this->layout->nest('content', 'home.index');
    }

}

views / layouts / default.php:

// head code
<?php echo Section::yield('content') ?>
// footer code

views / home / index.php

<?php Section::start('content'); ?>
<?php echo $name ?>
<?php Section::stop(); ?>

私はこのエラーで迎えられます:Error rendering view: [home.index] Undefined variable: name。私はそれが機能することを知ってい$this->layout->nest('content', 'home.index', array('name' => 'James'));ますが、それは私のすべての変数を配列に送信しなければならないという私のポイントを否定します。これが唯一の方法ではありません。

ビューテンプレートドキュメントは、コントローラーからのネストされたビューで変数を実行することに触れていないようです。

4

3 に答える 3

5

この方法で変数を渡すことができます。

class Home_Controller extends Base_Controller {

    public $layout = 'layouts.default';

    public function action_index()
    {

        $this->layout->nest('content', 'home.index')
                ->with('name', 'James');
    }

}
于 2012-12-23T10:56:42.463 に答える
3

この質問にはしばらく時間がかかりましたが、質問されて以来、Laravel 4が出てきて、物事を行うための新しい方法があります.

最近これを読んでいる場合は、View Composers を使用してビューのデータを準備することを検討する必要があります。

例:

class MyViewComposer {

    public function compose($view){
        $view->title = 'this is my title';
        $view->name = 'joe';
        ...
        $view->propertyX = ...;
    }
}

ビュー コンポーザを設定したら、アプリに登録します。

View::composer('home.index', 'MyViewComposer');

詳細については、ビュー コンポーザに関する laravel ドキュメントを参照してください。

http://laravel.com/docs/responses

于 2013-11-07T04:20:05.527 に答える
3

これは、laravel を使用してテンプレートを作成する方法の例です。

Class Products_Controller extends Whatever_Controller {

  public $layout = 'layouts.main';

  public function get_index()
  {
   // .. snip ..

    $view = View::make('home.product') 
        ->with('product', $product); // passing all of my variable to the view

    $this->layout->page_title = $cat_title . $product->title; 
    $this->layout->meta_desc = $product->description;

    $this->layout->content = $view->render(); // notice the render()
    }
}

私のメインレイアウトは次のようになります

<html>
<head>
<title> {{ $page_title }} </title>
<meta name="description" content="{{ $meta_desc }}" />
</head>
<body>
{{ $content }}
</body>
</html>

ホームページ/製品ページは次のようになります

<div class="whatev">
<h1> {{ $product->title }} </h1>
<p> {{ $product->description }} </p>
</div>

いくつかの問題を解決するのに役立つことを願っています

于 2013-01-12T19:42:11.503 に答える