Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
eug Гость цитировать
|
Добавлено: 12 Мар 2008 04:08:00 Заголовок сообщения: хелпер для поля формы с многомерным name |
|
|
Добрый день! В цикле генерируются поля формы
Код: |
<?php foreach ($info['CompanyExtra'] as $item): ?>
<div class="id_2">Fax:</div><?php echo $html->input('CompanyExtra/fax', array('class' => 'form3a','value'=>$item['fax']))?>
<div class="id_2">E-mail:</div><?php echo $html->input('CompanyExtra/email', array('class' => 'form3a', 'value'=>$item['email']))?>
<?php endforeach; ?> |
Как сделать, чтобы результат работы хелпера был таким:
Код: | <input name="data[CompanyExtra][fax][1]">
<input name="data[CompanyExtra][fax][2]">
и т.д. |
Если пишу так Код: | <?php echo $html->input('CompanyExtra/fax[]', array('class' => 'form3a','value'=>$item['fax']))?> |
то в сгенерированном коде это выглядит так:
input name="data[CompanyExtra][fax[]] вместо нужного input name="data[CompanyExtra][fax][1]
Помогите пожалуйста... |
|
Вернуться к началу |
|
|
xxx
цитировать
Зарегистрирован: 03 Мар 2008 15:58:41 Сообщения: 24
|
Добавлено: 12 Мар 2008 06:14:27 Заголовок сообщения: |
|
|
может быть проще этот хелпер сделать без использования html->input, а просто написать в хелпере <input name="$var"> |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 12 Мар 2008 11:07:15 Заголовок сообщения: |
|
|
Пробовал в 1.1 поставить теритий уровень вложения в параметры, не получалось. В 1.2 они что-то меняли в этом напралении они заменили $html->input на $form->input и теперь параметры рекомендуют писть через "." а не через "/", посмотри может они там и над количеством подшаманили.. |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 12 Мар 2008 17:54:25 Заголовок сообщения: |
|
|
Откуда вы вообще вложения нашли то?
Все поля любой модели лежат на одном и томже уровне
Покажите пример где pr($this->MyModel->findById(1)) вернет типа
{
'id' => 1,
'phone' => array
{
'0' => '+111',
'1' => '+222',
'2' => '+333',
}
} |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 12 Мар 2008 18:10:44 Заголовок сообщения: |
|
|
Хм.. А модель здеся причем .. мы ща говорим о том как организовать передачу параметров в котроллер из вьювера деревом...
В реалии если юзать стандартные хэлперы Пирожка то получиться массив data[].. с вытикающими из этого последствиями который и передаётся в контроллер...
А вложения мы называем мерности массива.. Чё здеся непонятного.. |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 12 Мар 2008 19:33:30 Заголовок сообщения: |
|
|
Зачем деревом данные передавать? Чтобы потом вбухивать перелопачивание данных ненужное перед их сохранением и тем самым двигаться в сторону bad cake?
Стандартным хелперам нифига не побарабану модель - 'магия' не будет работать. И xxx правильно написал - чистый html будет существенно быстрее (абсолютное использование helper'ов не догмат) |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 12 Мар 2008 19:55:07 Заголовок сообщения: |
|
|
гы ...
Понятное дело что читсный HTML будет работать быстрее (хотя в наше время 6 ядерных процессоров это не проблема), но если мне хочеться (рационально) сохранять "деревянные" данные в ассоциативную модель, что прикажете мне всё это в цикле строит сначала в HTML это потом получать и парсить.. нет уж увольте.. на это и расчитаны модели и хелперы форм (хотя то что они генерят можно и самому написать нонах это надо).. |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 12 Мар 2008 22:02:34 Заголовок сообщения: |
|
|
Код: |
$data = array(
'Category' => array('name'=>'test', 'description'=>'this is a test'),
'Post' => array(
array('title'=>'page title', 'body'=>'post body'),
array('title'=>'different page title', 'body'=>'different post body'),
);
$this->Category->saveAll($data, array('atomic'=>false));
|
http://api.cakephp.org/1.2/class_model.html#49f295217028004b5a723caf086a86b1
data[CompanyExtra][fax][1] и более высокие размерности ведут к Цитата: | потом получать и парсить.. | при post
при простом показе дерева достаточно формы которую выдает find... |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 12 Мар 2008 22:12:37 Заголовок сообщения: |
|
|
Опять вас мой дорого на модели потянуло, мы говорим о данных которые можно сформировать на стороне пользователя в виде дерева (разные прожекты разные требования) и тем же деревом направить в контроллер который будет дальше разбираться что куда..
Бывают такие ситуации что в принципе логически одно дерево и пользователю надо его показать одним деревом, а сохранить резулт от пользователя надо уже в разные модели частями..
Я думаю не стоит дальше обсуждать эту тему.. Потому что это уже философия.. |
|
Вернуться к началу |
|
|
Гость
цитировать
|
Добавлено: 13 Мар 2008 02:59:13 Заголовок сообщения: |
|
|
KPOTOB писал(а): | [code]
data[CompanyExtra][fax][1] и более высокие размерности ведут к Цитата: | потом получать и парсить.. | при post
при простом показе дерева достаточно формы которую выдает find... |
Жалко что в 1.1. не была хелпером предусмотрена столь тривиальная задача! У компании (id=1) есть много факсов, у каждого факса имеется связующее поле - используется такая конструкция
$hasMany = array('CompanyExtra' => array('foreignKey' => 'company_id')
при этом разработчики Cake гордо пишут:
Цитата: | Одна из самых сильных возможностей Cake PHP это построение отношений предоставленных моделью. В Cake PHP, связи между таблицами управляются через ассоциации. |
если она такая сильная, то отчего же в хелпере $html->input не предусмотрели тривиальную вложенность |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 13 Мар 2008 11:04:22 Заголовок сообщения: |
|
|
Почему не предусмотрена.
ну напишите:
Код: | $form->input('CompanyExtra.fax',array('value'=>'1')); |
Если это имелось ввиду. |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 13 Мар 2008 11:09:22 Заголовок сообщения: |
|
|
Гость
Сами то поняли что сказали и что хотите?
FORM на пост N одинаковых записей? Гораздо проще и красиве AJAXом сделать |
|
Вернуться к началу |
|
|
Гость
цитировать
|
Добавлено: 13 Мар 2008 18:13:25 Заголовок сообщения: |
|
|
KPOTOB писал(а): | Гость
Сами то поняли что сказали и что хотите?
FORM на пост N одинаковых записей? Гораздо проще и красиве AJAXом сделать |
Почему же? Приведем другой пример: у вас имеется форум. В форуме есть темы, у которых есть множество коммментариев. Моя задача - дать возможность модератору редактировать СРАЗУ ВСЕ комментарии конкретной темы, и естественно, сохранить это требуется одним нажатием на Submit. |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 13 Мар 2008 18:20:11 Заголовок сообщения: |
|
|
УХУХУХ....
Просто на PHP аж страшно подумать...
А вот с Пирожком уже что-то проглядывается...
|
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 13 Мар 2008 22:10:42 Заголовок сообщения: |
|
|
DeeperMD
и до cake делали хорошие приложения на PHP - и Кнут когдато был настольной книгой
Гость
ноль юзабилити - такой форум сразу в помойку ибо модерры разбегутся
откройте для себя in place editor - http://api.cakephp.org/1.2/class_ajax_helper.html#55b91ec4dad44d609e3bacce3bb39d51 и не плодите говносайты по инету |
|
Вернуться к началу |
|
|
|