2013-03-06 48 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