Я знаю, что это действительно простая вещь, которую я действительно должен знать, но я пытаюсь изучить cakephp, не сделав много php раньше. Мне сказали, что это глупая идея, но я делаю это для удовольствия, и поэтому я это делаю.
Я хочу передать массив из одного действия контроллера в другое действие контроллеров, а затем передать его в представление. У меня есть:
sponges_controller.php
$info = $this->data; $this->redirect(array('controller'=>'baths', 'action'=>'dashboard', $info));
baths_controller.php
function dashboard($info) { $this->set('info', $info); }
а потом
<?php echo debug($info); ?>
в представлении для приборной панели.
Я пробовал разные способы, но не могу заставить его работать. Все, что он делает, это распечатать Array ()
Plz помогите мне! 🙂 Юлия
Я не уверен в передаче данных в разных контроллерах, но внутри одного контроллера мы можем сделать это так же, как вызов функции, написав что-то вроде этого.
$this->function_name($info);
Это отлично работает по назначению. Я не пробовал этот тип передачи данных в разных функциях контроллеров.
Вы не можете передавать данные таким образом с одного контроллера на другой, насколько я знаю, в большинстве случаев вы можете конкатрировать строку с действием, например, ID для просмотра или редактирования.
Если вы хотите передать информацию, вы можете попробовать установить ее в переменной SESSION следующим образом:
$this->Session->write('Info', $info);
И в вашем другом контроллере вы можете проверить это:
$this->Session->read('Info');
Похоже, что торт не позволит вам передать массив в действие контроллера. Я установил простой пример, и я получил «массив для преобразования ошибки преобразования». Есть ли конкретная причина, по которой вы не просто отправляете данные в ванну / приборную панель? Я могу придумать обходной путь для вашей проблемы, но это довольно грязно.
Решение 8vius выше, безусловно, будет работать. Вот еще один способ, но использование сеансов, вероятно, намного лучше
$str = http_build_query($info); $this->redirect('/baths/dashboard?'.$str);
Итак, в действии вашей ванны / приборной панели вы получите доступ к своим данным, используя массив php $ _GET. Итак, если у вас изначально было this->data['name']
вы можете получить к нему доступ с $_GET['name']