Intereting Posts

простая проблема с cakephp

Я знаю, что это действительно простая вещь, которую я действительно должен знать, но я пытаюсь изучить 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']