установка объекта массива для использования в поле зрения - PullRequest
0 голосов
/ 06 марта 2012

В cakephp я извлекаю данные из mysql и присваиваю их массиву, но не могу повторно использовать каждый его элемент в представлении.

В контроллере я вызываю модель для запроса данных из базы данных, которые имеют следующий формат

Array ([0]=>Array([user]=>Array([something]=>somevalue [somethingelse]=>someotherValue))
   [1]=>Array([user]=>Array([something]=>somevalue [somethingelse]=>someotherValue))
    .......)

, и я инициализирую свой готовый к просмотру массив следующим образом, $ result - массив, полученный из базы данных.

$i=0;
foreach($result as $row)
{
   $exportDt[$i]['something']=$row['user'][something];
   $exportDt[$i]['somethingelse']=$row['user'][somethingelse];
}

this->set($exportDt);

Как я могу использовать этот массив exportDt в представлении?Я думаю, что настройка разрешена только для одного dim массива.

Ответы [ 2 ]

1 голос
/ 06 марта 2012

часть контроллера

$this->set('exportDt', $exportDt);

просмотреть часть

Вы можете напрямую получить доступ к $ exportDt как массиву в файле .ctp

Спасибо

1 голос
/ 06 марта 2012

Похоже, вам просто нужно использовать правильный синтаксис для установки переменной (т. Е. Передать переменную из контроллера в представление):

//controller
$this->set('exportDt', $exportDt);

//view
print_r($exportDt);

Первый параметр для $this->set() - это имя переменной, доступ к которой вы хотите получить из представления. Второе - это данные для помещения в эту переменную.

Так, например, вы даже можете использовать другие имена:

//controller
$this->set('myVar', $exportDt);

//view
print_r($myVar);

Другой распространенной практикой является использование PHP compact. Он ищет переменную по имени строки (ей) и создает массив с именем => значение

... compact () ищет переменную с таким именем в текущая таблица символов и добавляет ее в выходной массив так, чтобы имя переменной становится ключом, а содержимое переменной становится значение для этого ключа. Короче говоря, это делает противоположность extract ().

Пример:

//controller
$this->set(compact('exportDt');

//view
$print_r($exportDt);

Чаще всего он используется с несколькими переменными:

//controller
$var1 = 'whatever';
$myVar = 'something else';
$anotherVar = true;
$this->set(compact('var1', 'myVar', 'anotherVar'));

//view
echo $var1. ' ' . $anotherVar . ' ' . $myVar;
...