Как предварительно заполнить форму saveAll? - PullRequest
0 голосов
/ 02 ноября 2009

У меня есть форма, которая выглядит так:

                      Delete
    [Publisher One  ] []
    [Publisher Two  ] []
    [Publisher Three] []
 Add[               ]

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

Проблема в том, что при первой загрузке я должен предварительно заполнить поля. Теперь из книги CakePHP я должен создать форму с Model.n.field. Однако данные, которые я извлекаю с помощью $ this-> Model-> find ('all'), находятся в форме $ data [n] [Model] [field]. Должен ли я сам манипулировать данными, чтобы получить их в форме $ data [Model] [n] [field], или есть простой способ сделать это с помощью команды find, или, возможно, вспомогательная функция для ее преобразования из одного в другое?

Ответы [ 2 ]

1 голос
/ 05 ноября 2009

Класс Set мог бы выполнить повторную обработку за вас - см. CakeBook и пример . Также вам могут пригодиться другие методы класса Set.

0 голосов
/ 02 ноября 2009

Трудности в перемещении данных в различных формах в Cake не самые гладкие, я согласен. Но почему бы тебе просто не сделать это:

  • вытащить ваши данные в контроллере. $ data - это массив с n-й записью в качестве первого индекса; затем Modelname, затем fieldname (извините за запутанную формулировку - именно так вы и сделали выше).

по вашему мнению:

 foreach( $data as $publisher-id => $record )
 {
   echo '<tr><td>' . $record['Model']['publisher_name'] . '</td>';
   echo '<td>' . $form->input( 'Model.publisher_id', array( 'value' => $model['Modelname']['publisher_id']) ) . '</td></tr>';
 }

Так что я не думаю, что вам нужно манипулировать данными или массивами, возвращаемыми из операции поиска. Попробуйте просто подумать о том, как вы собираетесь его выводить, и вы должны быть немного сообразительны в этом.

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