простая проблема CakePHP - PullRequest
       1

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

1 голос
/ 26 августа 2011

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

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

Похоже, что торт не позволит вам передать массив в действие контроллера.Я установил простой пример и получил «ошибку преобразования массива в строку».Есть ли конкретная причина, по которой вы не просто публикуете данные на панели / панели?Я могу придумать обходной путь для вашей проблемы, но он довольно запутанный.Вот другой способ, но использование сессий, вероятно, намного лучше

$str = http_build_query($info);
$this->redirect('/baths/dashboard?'.$str);

Так что тогда в вашем действии baths / dashboard вы получите доступ к своим данным с помощью массива php $ _GET.Так что, если у вас изначально было this->data['name'], вы можете получить к нему доступ с помощью $_GET['name']

2 голосов
/ 26 августа 2011

Насколько я знаю, вы не можете передавать данные таким образом от одного контроллера к другому, самое большее, вы можете связать строку с действием, например, идентификатор для просмотра или редактирования.

Если выЕсли вы хотите передать информацию, вы можете попытаться установить ее в переменной SESSION следующим образом:

$this->Session->write('Info', $info);

И в вашем другом контроллере вы можете проверить это:

$this->Session->read('Info');
0 голосов
/ 26 августа 2011

Я не уверен насчет передачи данных в разные контроллеры, но в одном контроллере мы можем сделать это просто как вызов функции, написав что-то вроде этого.

$this->function_name($info);

Это будет отлично работать как задумано,Я не пробовал этот тип передачи данных в разных функциях контроллеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...