2012-04-13 138 views
2

我無法將簡單變量傳遞給視圖,有人可以告訴我我做錯了什麼嗎?Kohana - 將變量傳遞給視圖

我有一個控制器用戶:

class Controller_User extends Controller_Template_Login { 

    public function action_index() 
    { 
     $this->template = 'user/info'; 
     parent::before(); 
     $user = Auth::instance()->get_user();   
     $this->template->content = View::factory('user/info') 
      ->bind('user', $user) 
      ->bind('message', $message) 
      ->bind('errors', $errors);   

     // if a user is not logged in, redirect to login page 
     if (!$user) 
     { 
      Request::current()->redirect('user/login'); 
     } 
    } 

} 

在我的視圖(用戶/信息)我得到用戶沒有定義。

我錯過了什麼?

編輯:注意,這可以通過添加固定:

$user = Auth::instance()->get_user(); 

到Controller_Template_Login

 $user = Auth::instance()->get_user(); 
     $this->template->user = $user; 

什麼,我想知道的是爲什麼這不起作用:

$user = Auth::instance()->get_user();   

    $this->template->content = View::factory('user/info') 
    ->bind('user', $user) 
    ->bind('message', $message) 
    ->bind('errors', $errors); 

回答

5

因爲在第一種情況下

$this->template->user = $user; 

$user變量分配給的$this->template一個user屬性。

而在第二種情況:

$this->template->content = View::factory('user/info') 
    ->bind('user', $user) 
    ->bind('message', $message) 
    ->bind('errors', $errors); 

綁定$user變量的$this->template->content一個user屬性。

+0

因此下面的代碼不執行任何函數:$ this->模板 - >內容=查看::工廠(「用戶/信息」),它僅可分配視圖的內容模板 - >內容,但它不是使用權? – Tarek 2012-04-13 11:29:28

+1

@Tarek:這段代碼將一個視圖對象賦給'content'屬性。如果你在模板中使用'$ content'變量 - 它會被渲染。如果沒有 - 它沒有做任何有用的事情 – zerkms 2012-04-13 12:50:46