2016-05-27 9 views
1

Ich benutze Sonata Admin, um ein Admin-Panel für FOS USER Bundle-Benutzer zu erstellen. Und ich muss ein Drop-Down für "Rollen" verwenden.Verwenden Dropdown-Menü für Fos Benutzer Bundle Rollen Feld in Sonate admin

Dies ist mein Admin-Klasse,

<?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, 
     )); 
    } 

Aber ich diesen Fehler,

Hinweis: Array String-Konvertierung 500 Internal Server Error - ContextErrorException

Ich denke, das ist der Teil, der einen Fehler gibt,

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

Antwort

1

Diese a:1:{i:0;s:10:"ROLE_ADMIN";} ist in der Tat ein Array (serialisiert). So haben Sie eine String-Darstellung, dass zu geben, ist es in

$formMapper->add('roles', 'choice', array(
    'choices' => array(
     'Admin' => 'ROLE_ADMIN', 
     'User' => '', 
     ), 
    'choices_as_values' => true, 
)); 

oder so etwas zu ändern.

BTW, sobald Sie das buchen, müssen Sie möglicherweise Ihre Daten manuell manipulieren, da ich hier nicht bewusst bin, wie diese Feldzuordnung durch das Framework angegriffen werden soll.

Was ich vorschlagen kann, wenn keine automatische Magie passiert, ist Ihre custom FormType schreiben, um diese Situation zu behandeln.

Verwandte Themen