プラグイン > 開発について > 商品詳細ページでお気に入り追加の時はバリデーションを実行しないようにしたい |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
h_tanaka |
投稿日時: 2017/2/1 10:55
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
商品詳細ページでお気に入り追加の時はバリデーションを実行しないようにしたい EC-CUBE3の商品詳細ページにフォームを追加するため、AddCartTypeを拡張したAddCartTypeExtensionクラスを作成しています。
buildForm()の中でバリデーションを定義すると正常に動作したのですが、お気に入り追加した時にもバリデーションが実行されてしまいます。
これを解決するため、AddCartType.phpを参考にバリデーション関数をコールバックするように変更したところ、お気に入り追加でバリデーションが実行されないようにできたのですが、今度は基幹処理で次のエラーが出るようになりました。 The identifier id is missing for a query of Eccube\Entity\ProductClass at CartService->addProduct(null, '1') in ProductController.php line 272
setDefaultOptions()の定義で基幹処理に影響してしまったのだと思います。 どのようにすれば、お気に入り追加の時にバリデーションが実行されないようにできるのでしょうか? |
h_tanaka |
投稿日時: 2017/2/20 16:01
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: 商品詳細ページでお気に入り追加の時はバリデーションを実行しないようにしたい 少しわかりました。
$resolver->setDefaults()で、既存のAddCartTypeのdefaultを上書きしてしまっているようです。 このため、規格未選択でカートボタンを追加するときにAddCartTypeのバリデーションが呼ばれず、保存処理でproduct_class_idがnullのためにエラーになっているようです。 OptionsResolverInterfaceのsetDefaults()を呼ぶ以外に拡張したFormTypeのバリデーションをコールする方法がわかれば解決しそうです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |