私は、getRolesメソッドを持つUserエンティティを持っています。私は、新しいユーザーを作成するためのフォームを作成しようとすると、問題が来るsymfonyで1つの役割しか持たないユーザ
class User implements UserInterface {
...
public function getRoles()
{
return array($this->roles);
}
...
}
:しかし、この作業を取得するには、getRoles()、のようなものを配列を返す必要があります。これは、各ユーザーが一つだけな役割を持っているはずだからですので、私はこのようなフィールドを作成します。
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
->add('roles', ChoiceType::class, array(
'choices' => array(
'Role 1' => 'ROLE_ONE',
'Role 2' => 'ROLE_TWO',
'Role 3' => 'ROLE_THREE',
'Role 4' => 'ROLE_FOUR'
),
'label' => 'Role')
)
...
しかし、私はそれをレンダリングしようとすると、それは私にエラーがスローされます:「お知らせ:配列の文字列への変換」を、 ChoiceTypeを使用すると、1つのオプションしか選択できないためです。
'multiple' => true
しかし、これは(それは私が欲しいものではありませんどのような)複数のオプションを選択することができます:この問題は、オプションで固定されています。
私は役割ではなく、配列を返すために試してみてください。これにより
class User implements UserInterface {
...
public function getRoles()
{
return $this->roles;
}
...
}
を、フォームが機能するようになりましたが、ログインは動作を停止し、私に次を伝えます:
Catchable Fatal Error: Argument 4 passed to Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() must be of the type array, string given...
私のアプリケーションの論理は、ユーザがただ一つの役割しか持たないということです。私は配列は必要ありませんが、symfonyに(ログイン時に) "役割"がただ一つ(文字列) (配列)...
私の英語は申し訳ありません。
ありがとうございました! ChoiceTypeはまだ私にエラーを通知します: '' Notice:配列から文字列への変換 ''。問題は、getRoles()が配列を返すということです... – WeirdestBoy
' - > add( 'role'、' not、 ' - > add( 'roles'、' – Federkun
そうでなければ[データ変換] http://symfony.com/doc/current/cookbook/form/data_transformers.html) – Federkun