バージョン選択

フォーラム

メニュー

オンライン状況

83 人のユーザが現在オンラインです。 (64 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 83
もっと...

サイト内検索

質問 > フロント機能 > nullを許可したInteger

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/8/6 20:12
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 939
nullを許可したInteger
EC-CUBE4.0.2

数値を未入力でも許可したいです。
次のように定義していますが、バリデーションで「有効な値ではありません。」と怒られてしまいます。
数値でnullを許可するにはどうすればよいでしょうか?

Entity.php
        /**
         * @var string
         *
         * @ORM\Column(name="quantity", type="decimal", precision=10, scale=0, options={"default":null}, nullable=true)
         */
        private $quantity = null;


Form/Type.php
            ->add('quantity', IntegerType::class, [
                'required' => false,
                'empty_data' => null,
            ])


twig
{{ form_widget(form.quantity, {'attr': {'class': 'quantity'}}) }}
{{ form_errors(form.quantity) }}


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

junpeko
投稿日時: 2019/8/13 16:50
対応状況: −−−
半人前
登録日: 2019/5/28
居住地:
投稿: 12
Re: nullを許可したInteger
'empty_data' => null,
を削除していただくと、うまくいくかと思います。

h_tanaka
投稿日時: 2019/8/19 7:49
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 939
Re: nullを許可したInteger
junpeko さん

上記のエラーは出なくなりましたが、別のエラーが発生しました。

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'quantity' cannot be null


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

junpeko
投稿日時: 2019/8/21 15:01
対応状況: −−−
半人前
登録日: 2019/5/28
居住地:
投稿: 12
Re: nullを許可したInteger
そうなんですね。

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'quantity' cannot be null

はデータベースのnot null制約のエラーのようです。
今回のエラーで考えられることとしては、

・@ORM\Columnを変更した際に、マイグレーションが行われているか?

・実際のDBに@ORM\Columnで記述した設定が反映されているか?

辺りは気になります。
h_tanaka
投稿日時: 2019/8/21 15:04
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 939
Re: nullを許可したInteger
junpeko さん

アノテーションの定義は最初に定義したときから変更しておらず、phpMyAdminで対象のカラムを改めて確認したところ、NULL許容、デフォルトNULLになっていました。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2019/8/21 20:12
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 939
Re: nullを許可したInteger
自己解決しました!

Symfony の IntegerType のドキュメントを読んでいたところ、
'empty_data' => '',
とすることで、null として扱われるという記述をみつけました。

次のようにすることで、空文字でも登録できるようになりました。
DBの値を確認しても null が設定されていました。

ついでに、null および 数値のみ許可するようバリデーションを追加しました。

Form/Type.php
            ->add('quantity', IntegerType::class, [
                'required' => false,
                'empty_data' => '',
                'constraints' => [
                    new Assert\Regex([
                        'pattern' => "/^(\d+)?$/u",
                        'message' => 'form_error.numeric_only',
                    ]),
                    new Assert\Length(['max' => 11]),
                ],
            ])


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

junpeko
投稿日時: 2019/8/22 14:08
対応状況: −−−
半人前
登録日: 2019/5/28
居住地:
投稿: 12
Re: nullを許可したInteger
h_tanaka さん

なるほど、
'empty_data' => ''
でnullとして扱われるのですね。

解決されたようでなによりです。
h_tanaka
投稿日時: 2019/8/22 14:12
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 939
Re: nullを許可したInteger
直感的にわかりにくい仕様がなんとも言えませんが。。
勉強にはなりました。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は54,098名です
総投稿数は94,136件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2014
4
468
1912
5
yuh
1610
6
umebius
1398
7
red
1376
8
h_tanaka
939
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
780
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.