使用sonata admin

时间:2016-05-27 04:33:04

标签: php symfony fosuserbundle sonata-admin

我正在使用sonata admin为FOS USER捆绑用户创建管理面板。我需要使用下拉列表来提交“角色”。

这是我的管理类,

<?php

namespace AdminBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;

class UserAdmin extends Admin {

    protected function configureFormFields(FormMapper $formMapper) {
        $formMapper->add('name', 'text');
        $formMapper->add('surname', 'text');
        $formMapper->add('username', 'text');
        $formMapper->add('email', 'text');
        $formMapper->add('telephone', 'text');
        $formMapper->add('password', 'text');
        $formMapper->add('roles', 'choice', array(
            'choices' => array(
                'Admin' => 'a:1:{i:0;s:10:"ROLE_ADMIN";}',
                'User' => 'a:0:{}',
            ),
            'choices_as_values' => true,
        ));
    }

但是我收到了这个错误,

  

注意:数组到字符串转换500内部服务器错误 -   ContextErrorException

我认为这是女巫出错的部分,

        $formMapper->add('roles', 'choice', array(
            'choices' => array(
                'Admin' => 'a:1:{i:0;s:10:"ROLE_ADMIN";}',
                'User' => 'a:0:{}',
            ),
            'choices_as_values' => true,
        ));

1 个答案:

答案 0 :(得分:1)

这个$formMapper->add('roles', 'choice', array( 'choices' => array( 'Admin' => 'ROLE_ADMIN', 'User' => '', ), 'choices_as_values' => true, )); 确实是一个数组(序列化)。所以你必须给出一个字符串表示,在

中更改它
[NSApp terminate:self];

或类似的东西。

一旦你发布了BTW,你可能需要手动操作你的数据,因为我不知道框架将如何处理该字段映射。

我可以建议,如果没有发生自动魔法,就是写custom FormType来处理这种情况。

相关问题