- > bind_global()隐藏了Kohana 3.3中的视图

时间:2013-03-30 18:18:22

标签: php kohana

我想将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.phpuser/user.php$content中的标记可用$user

但是,我想访问template.php中的bind()。如果我将bind_global('user', $user)方法更改为$user,那么我确实可以访问template.php中的$content

但问题是,如果我这样做,{{1}}似乎什么也没有。我哪里错了?

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

这对你来说应该像魅力一样。