Посмотрите на код embedRelation
: он просто получит вашу ассоциацию, запустил для нее прожектор и позвонил embedForm
.
$subForm = new sfForm();
foreach ($this->getObject()->$relationName as $index => $childObject)
{
$form = $r->newInstanceArgs(array_merge(array($childObject), $formArgs));
$subForm->embedForm($index, $form, $innerDecorator);
$subForm->getWidgetSchema()->setLabel($index, (string) $childObject);
}
$this->embedForm($fieldName, $subForm, $decorator);
Просмотреть $this->getObject()->$relationName
деталь? Невозможно заказать встраиваемые формы, но вы можете их встроить самостоятельно.
<?php
foreach ($this->getObject()->getMyInnerFormOrderedByStuff() as $index => $childObject)
{
$form = new InnerFormForm($childObject); // todo!!
$subForm->embedForm($index, $form, $innerDecorator);
$subForm->getWidgetSchema()->setLabel($index, (string) $childObject);
}
$this->embedForm($fieldName, $subForm, $decorator);
Вы должны реализовать getMyInnerFormOrderedByStuff()
и все.
Я не понимаю, что вы хотите заказать? –
У меня есть embededRelation, который показывает записи из внешней таблицы в режиме редактирования модулей. Я хочу заказать строки по одному из полей. Подобно заказу телефонных номеров по коду страны (или что-нибудь еще) в этом примере: http://di-side.com/di-side/symfony-embedrelation-one-to-many-doctrine-relations/ На данный момент я решил это путем буферизации $ set ['InnerFormFields'] -> render() в массиве, который я сортирую, используя usort() в шаблоне _form. Я думаю, это не лучшая практика. – mene