Как сделать подгруппы в форме администратора сонаты

В AdminBundle\Mapper\BaseGroupedMapper.php Сонаты я видел пример кода:

    public function with($name, array $options = array())
    {
    /*
     * The current implementation should work with the following workflow:
     *
     *     $formMapper
     *        ->with('group1')
     *            ->add('username')
     *            ->add('password')
     *        ->end()
     *        ->with('tab1', array('tab' => true))
     *            ->with('group1')
     *                ->add('username')
     *                ->add('password')
     *            ->end()
     *            ->with('group2', array('collapsed' => true))
     *                ->add('enabled')
     *                ->add('createdAt')
     *            ->end()
     *        ->end();
     *
     */

К сожалению, я получаю сообщение об ошибке, если сначала добавляю группу, а ЗАТЕМ добавляю вкладки. Я хочу, чтобы моя форма имела основную простую форму (имя и т. д.), а затем вкладки под ней, чтобы перечислять формы отношений сущностей (onetomany...) вкладку за вкладкой, чтобы сохранить ее в чистоте. К сожалению, я получаю эту ошибку:

New tab was added automatically when you have added field or group. You should close current tab before adding new one OR add tabs before adding groups and fields.

Кто-нибудь знает, как это сделать? Или это было 2 отдельных примера? Я хотел бы, если это возможно, избежать чистых вкладок и, следовательно, не иметь возможности постоянно видеть часть моей формы.


person Florent Destremau    schedule 02.07.2015    source источник


Ответы (1)


Если вы хотите использовать вкладки, все ваши элементы должны находиться между вкладками.

В вашем примере вам не хватает вкладки между первой группой1, вы должны сделать это:

$formMapper
    ->tab('General')
        ->with('group1')
            ->add('username')
            ->add('password')
        ->end()
    ->end()
    ->tab('Relations')
        ->with('group1')
            ->add('username')
            ->add('password')
        ->end()
        ->with('group2')
            ->add('enabled')
            ->add('createdAt')
        ->end()
    ->end();

Вместо использования ->with('', array('tab' => true) я использовал ->tab(''), это имеет больше смысла.

Также свернутый больше не поддерживается: https://stackoverflow.com/a/29105992/3726645

Документация: https://sonata-project.org/bundles/admin/master/doc/reference/action_create_edit.html#formgroup-options

person HypeR    schedule 16.07.2015