2

私はこのコントローラーメソッドを持っています

class Account_Controller extends Base_Controller
{
    public $layout = 'layouts.default';

    public function action_index($a,$b)
    {
        $data['a']  =   $a;
        $data['b']  =   $b;

        $this->layout->nest('content', 'test',$data);
    }
}

そしてこれが私のレイアウトです

<div id = "content">
    <?php echo Section::yield('content'); ?>
</div>

そしてこれは私のtest.phpです

echo $a;
echo '<br>';
echo $b;
echo 'this is content';

これにアクセスすると

http://localhost/myproject/public/account/index/name/email

レイアウトをロードしましたが、test.phpがロードされていません。テンプレートにコンテンツをロードするにはどうすればよいですか。刃は使いたくない。

4

2 に答える 2

4

ビューを別のビュー内にネストすると、そのコンテンツは単純な変数として定義されます。したがって、単に出力します。

<?php echo $content ?>

セクションは、子ビュー内からレイアウト(または実際には親ビュー)の何かを変更する必要がある場合に使用されます。例えば:

// on layout.php
<title><?php echo Section::yield('title') ?></title>
// on test.php
<?php Section::start('title'); ?>
    My Incredible Test Page
<?php Section::stop(); ?>

<div class="test_page">
    ...
</div>
于 2013-03-08T04:49:46.827 に答える
2

私はあなたがそれのためにレンダリングする必要があると思います、確かではありません、多分部分的なロード:

<div class="content">
    <?php echo render('content.test'); ?>
</div>

ネストビューについては、次のサンプルを参照してください:http: //laravel.com/docs/views#nesting-views

  public function action_dostuff()
   {
      $view = View::make('controller.account');
      // try dump var to grab view var_dump($view);
      var_dump($view);
      $view->test = 'some value';
      return $view;
   }

または代わりにブレードを使用してください:Laravelでのテンプレート

于 2013-03-06T17:26:57.600 に答える