在 Kohana 中,您可以通过 2 种方式传递变量 - 使用set
或bind
。
来自文档:
set() 和 bind() 之间的唯一区别是 bind() 通过引用分配变量。如果在定义变量之前 bind() 变量,则该变量将被创建为 NULL 值。
bind
如果您的变量并不总是出现在视图中(如errors
变量,您将在后置条件中定义),那么这样会更安全一些。小例子:
public function action_roadtrip()
{
$post = $this->request->post();
if (!empty($post))
{
try
{
// Do some ORM validation here
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors('');
}
}
$view = View::factory('some_view_name')->bind('errors', $errors);
$this->request->response = $view;
}
请注意,即使您errors
在 POST 期间定义了 ,在您的视图中将其与 GET 一起使用仍然是安全的。
还有一点需要注意的是,bind
它只支持变量(类似于空函数的行为)。
如果要传递表达式,请使用set
,请注意以下之间的区别bind
:
$this->view->set('errors', $errors = array());