我想将Controller_Template
中的一些数据传递给我的template.php
。
这是我的控制器:
class Controller_User extends Controller_Template {
public $template = 'template';
public function action_index() {
$user = "Alice";
$view = View::factory('user/user')
->bind('user', $user);
$this->template->content = $view;
}
}
这样做意味着我可以访问$user
中的user/user.php
,user/user.php
中$content
中的标记可用$user
。
但是,我想访问template.php
中的bind()
。如果我将bind_global('user', $user)
方法更改为$user
,那么我确实可以访问template.php
中的$content
。
但问题是,如果我这样做,{{1}}似乎什么也没有。我哪里错了?
答案 0 :(得分:2)
当您使用$view
方法时,$content
(或bind_global()
模板变量)最终为空,原因很简单 - 它是一个静态方法,不会返回任何内容,因为它是$view
定义中调用的最后一个方法,$view
变量最终等于NULL
。
有点不幸(如果你问我)PHP允许在对象上下文中使用静态方法,而同时它不允许使用属性。正是这种不一致(以及其他许多因素)导致了您的问题。
实现您所追求的目标的方法是通过静态调用$user
方法全局绑定bind_global()
变量。完整的工作示例:
class Controller_User extends Controller_Template {
public $template = 'template';
public function action_index()
{
$user = "Alice";
View::bind_global('user', $user);
$view = View::factory('user/user');
$this->template->content = $view;
}
}
这对你来说应该像魅力一样。