2

いくつかのフィールドを持つフォームがあります:

protected function configureFormFields(FormMapper $formMapper)
{
    $isNew = !$this->getRequest()->get($this->getIdParameter());

    $formMapper
        ->add('title')
        ->add('file', 'file', array('required' => $isNew))
    ;
}

新しいオブジェクトにのみフィールドを必須にするより良い方法はありますか?

4

4 に答える 4

2

私たちの側では、元の投稿と同じ方法で行っていますが、よりクリーンな解決策があることを知ってうれしいです:)

イベントサブスクライバーは、このような小さなニーズには複雑すぎるように見えます。

よろしく、クリストフ

于 2012-08-23T03:20:52.823 に答える
0

より良い方法は、イベント サブスクライバーをフォーム クラスに追加することだと思います。ここで例を確認できます。

http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html

ありがとう ;)

于 2012-08-23T00:23:58.850 に答える
0

docs からここにある SonataisNew()関数を使用できます。

protected function configureFormFields(FormMapper $formMapper)
{
    $isNew = $this->getSubject()->isNew();

    $formMapper
        ->add('title')
        ->add('file', 'file', array('required' => $isNew))
    ;
}

$this->getSubject()ただし、正しいものが返されないという問題がいくつかあります。これらの問題を修正するためのプル リクエストが公開されています(ブランチを現在の状態で使用する方法についての説明を記載したコメントにリンクしました)。

于 2014-12-04T16:20:18.710 に答える