2013-09-11 4 views
0

Я пытаюсь заказать встроенную форму в базовом модуле SF1.4 одним из значений.Закажите встроенную форму в Symfony 1.4

$ this-> embedRelation ('MyInnerForm as innerForm');

дает мне таблицу, которая показывает Edit-Forms для всех записей в MyInnerForm. Я хочу, чтобы он был заказан правильно. Невозможно найти способ изменить запрос, чтобы добавить orderBy-Option или (будет лучше) сортировать массив результатов с помощью PHP. Спасибо за предложения.

+0

Я не понимаю, что вы хотите заказать? –

+0

У меня есть embededRelation, который показывает записи из внешней таблицы в режиме редактирования модулей. Я хочу заказать строки по одному из полей. Подобно заказу телефонных номеров по коду страны (или что-нибудь еще) в этом примере: http://di-side.com/di-side/symfony-embedrelation-one-to-many-doctrine-relations/ На данный момент я решил это путем буферизации $ set ['InnerFormFields'] -> render() в массиве, который я сортирую, используя usort() в шаблоне _form. Я думаю, это не лучшая практика. – mene

ответ

0

Посмотрите на код 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() и все.

+0

@mene Или если вы должны использовать один и тот же порядок везде, вы можете добавить ['orderBy: column_name'] (http://www.testically.org/2010/09/30/did-you-know-that-you -can-sort-your-doctrine-relations-by-setting-an-orderby-option-in-your-schema /) к определению отношения, а затем отношение будет упорядочиваться по этому столбцу каждый раз, когда он обращается лениво. – 1ed

+0

К отношению def в schema.yml? Это было бы круто! – mene

+0

Да, вы можете делать то, что @ 1ed сказать, оно будет работать так же, как вызов пользовательского метода 'getMyInnerFormOrderedByStuff'! – Damien

 Смежные вопросы

  • Нет связанных вопросов^_^