Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

хелпер для поля формы с многомерным name
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 не предусмотрели тривиальную вложенность Smile
Вернуться к началу
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 аж страшно подумать...

А вот с Пирожком уже что-то проглядывается...

Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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 и не плодите говносайты по инету
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru