Передать переменную внутри контроллера - PullRequest
3 голосов
/ 19 декабря 2009

Я хотел бы передать переменную из одной функции контроллера в другую. Другими словами, как я могу получить доступ к переменной из другой функции внутри того же контроллера?

Спасибо

Ответы [ 3 ]

4 голосов
/ 21 декабря 2009

Как упоминал Паскаль, один из способов - установить свойство для объекта:

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

}
2 голосов
/ 23 сентября 2010

Я заметил, что определение свойства в контроллере не является постоянным после последующих вызовов к контроллеру.

Однако определение свойства в модели сохраняется между вызовами функций контроллера.

1 голос
/ 19 декабря 2009

Учитывая, что ваши контроллеры являются классами, у вас есть два решения:

  • передать переменную как параметр из одного метода в другой; см. Аргументы функции
  • или сохранить данные в свойстве класса, видимом из всех методов в одном классе; см Свойства

Какое из этих решений вы должны использовать?

Полагаю, это зависит от ситуации:

  • Если у вас есть только несколько данных, которыми можно поделиться только между двумя методами, возможно, лучше передать их в качестве параметров.
  • Если у вас есть данные, которые должны использоваться всеми методами, то второе - правильное решение.
  • Если вы находитесь между этими двумя делами ... Вы, вероятно, должны будете решить сами, какое из них наиболее практично ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...