0

SonataAdminBundle で user テーブルを管理しています

protected function configureFormFields(FormMapper $formMapper){ 
    $formMapper    
    ->with('General')   
     ->add('username')    
     ->add('email') 
     ->add('plainPassword','text',array('required' => false))

既存のユーザー データを編集するときに、パスワード入力を空白のままにします。大丈夫です、パスワードはそのままです。

しかし、新しいアイテムを作成するときにパスワードを入力するのを忘れました。SQLエラーが表示されます(パスワードにはデータベースに必要な属性があります)

しかし、required => false 属性を削除すると、

->add('plainPassword','text')

編集時に新しい入力が必要です。

どうすれば動作を変更できますか、またはパスワード入力を通常の入力として処理するにはどうすればよいですか?

4

1 に答える 1

1

作成アクションと更新アクションには、異なるフィールド タイプを使用する必要があります。configureFormFields の構成で:

protected function configureFormFields(FormMapper $formMapper)
{
    // ...

    if ($isCreateAction) {
        $formMapper->add('plainPassword','text');
    }
    else {
        $formMapper->add('plainPassword','text', array('required' => false));
    }   
}

$isCreateAction正確な設定方法はわかりませんが、方法を確認していただけないでしょAdmin::getSubject()うか。その中に GET id を取得するルーチンがあります。ID が設定されていない場合、アクション タイプはcreateです。

于 2013-07-07T10:09:20.007 に答える