2013-03-06 31 views
1

我有这个控制器方法与laravel模板显示内容,也不得刀片

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

当您在另一个视图中嵌套视图时,它的内容被定义为一个简单的变量。所以,只需输出它:

<?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> 
+0

太好了!这太简单了,我从来没有注意过,这可能太简单了。谢谢! – 2013-03-08 06:44:03

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; 
    } 

或者使用替代刀片:Templating in Laravel