在控制器内传递变量

时间:2009-12-19 18:44:46

标签: php cakephp

我想将一个变量从一个控制器函数传递给另一个控制器函数。换句话说,如何在同一个控制器中从其他函数访问变量?

由于

3 个答案:

答案 0 :(得分:4)

正如Pascal所提到的,一种方法是在对象上设置属性:

class CategoriesController extends AppController
{

  public $foo = '';  

  public function index()
  {
    $this->foo = 'bar';
  }

  public function view($id = null)
  {
    $baz = $this->foo;

    $this->set('baz', $baz);
  }

}

或者将其作为参数传递:

class CategoriesController extends AppController
{

  public function index()
  {
    $foo = "bar";
    $this->view($foo)
  }

  public function view($param)
  {
    $this->set('bar', $param);
  }

}

答案 1 :(得分:2)

我注意到在后续调用控制器之后,在控制器中定义属性并不是持久的。

但是,在模型中定义属性在控制器函数调用之间是持久的。

答案 2 :(得分:1)

考虑到您的控制器是类,您有两个解决方案:

  • 将变量作为参数从一个方法传递给另一个方法;见Function arguments
  • 或将数据存储在class-property中,从同一个类中的所有方法可见;见Properties

您应该使用哪种解决方案?

我认为这取决于具体情况:

  • 如果您只有几个数据只能在两种方法之间共享,那么将它们作为参数传递可能就好了。
  • 如果您有所有方法应共享的数据,则第二个是正确的解决方案。
  • 如果你介于这两种情况之间......你可能需要自己判断哪一种是最实用的解决方案......