2

EasyAdminBundleで作成した管理パネルでは、フォームの検証はCKEditorType. 一部のフィールドを編集する必要があるため、FOSCKEditorBundleで WYSIWYG を実装しました。

関連するフィールドからの抜粋:

- { property: 'content', type: 'FOS\CKEditorBundle\Form\Type\CKEditorType'} 

空の「コンテンツ」フィールドでフォームを送信すると、このフィールドに入力してくださいのような検証エラーの代わりに、InvalidArgumentException次のエラーが表示されます。Expected argument of type "string", "NULL" given.

CKEditor を使用しない関連フィールドからのスニペット:

- { property: 'content' } 

=>検証は完全に機能します。

私のエンティティフィールド:

    /**
     * @ORM\Column(type="text")
     * @Assert\NotBlank
     * @Assert\NotNull
     */
    private $content;

Symfony プロファイラーは、このフィールドが実際にrequired属性を持っていることを示しています。

CKEditorフィールドタイプで検証を有効にするにはどうすればよいですか?

4

2 に答える 2

5

それはckeditorについてではありません。必要なのは、引数を介してNULLを受け入れるようにコンテンツ セッターを修正することだけです。次に、検証プロセスが正しく開始されます。

public function setContent(?string $content) {
    $this->content = $content;

    retrun $this;
}

検証は、要求値がフォーム データ (この場合はエンティティ) フィールドに設定された後に実行されます。ここでフォーム送信フローを見つけることができます: https://symfony.com/doc/current/form/events.html#submitting-a-form-formevents-pre-submit-formevents-submit-and-formevents-post-submit

于 2019-01-06T13:27:52.673 に答える