バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > チェックボックスのチェックが外せない

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/5/20 18:37
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
チェックボックスのチェックが外せない
EC-CUBE4.0.2

フロントのマイページ内に新規ページを作成し、チェックボックスのフォームを作成しました。
チェックを入れて保存することはできました。
しかし、チェックを外して保存することができません。
チェックがついているチェックボックスをクリックすると、見た目はチェックが外れるように見えるのですが、ブラウザの開発者ツールでソースを見ると、checked="checked" がついたままになっています。
このまま保存しようとすると、保存処理に行かずに、バリデーションではじかれたときのように画面が再表示されてしまいます。
このとき、フォームエラー等はなにも表示されず、チェックはついたままになっています。
原因わかりますでしょうか?

app/Customize/Entity/PaperBag.php
        /**
         * @var boolean
         *
         * @ORM\Column(name="attach_paper_bag", type="boolean", options={"unsigned":true,"default":false}, nullable=true)
         */
        private $attach_paper_bag = false;


app/Customize/Form/Type/PaperBagType.php
        $builder
            ->add('attach_paper_bag', CheckboxType::class, [
                'label' => 'ペーパーバッグをつける(+¥500/個)',
                'required' => false,
                'value' => 1,
            ])


html/template/test/assets/project/js/custom.js
$(function() {
    // ページ読み込み時
    $(document).ready( function(){
        toggleAttachPaperBag($('#paper_bag_attach_paper_bag'));
    });

    // ペーパーバッグをつけるの選択
    $('#paper_bag_attach_paper_bag').on('change', function() {
        toggleAttachPaperBag($(this));
    });
    var toggleAttachPaperBag = function(checkboxObj) {
        if (checkboxObj.prop('checked')) {
            $('form').find(':input').attr('disabled', false);
        } else {
            $('form').find(':input').attr('disabled', true);
            checkboxObj.attr('disabled', false);
            $('#registerButton').attr('disabled', false);
        }
    };
});


app/template/test/Mypage/paper_bag.twig
<dl>
    <dt>
        {{ form_label(form.attach_paper_bag, { 'label_attr': { 'class': 'ec-label' }}) }}
    </dt>
    <dd>
        <div class="ec-checkbox{{ has_errors(form.attach_paper_bag) ? ' error' }}">
            <label>
                {{ form_widget(form.attach_paper_bag) }}
            </label>
            {{ form_errors(form.attach_paper_bag) }}
        </div>
    </dd>
</dl>


チェックを外したときのソース
<dl>
    <dt>
    </dt>
    <dd>
        <div class="ec-checkbox">
            <label>
                <input type="checkbox" id="paper_bag_attach_paper_bag" name="paper_bag[attach_paper_bag]" value="1" checked="checked">
                <label for="paper_bag_attach_paper_bag">
                    <span>ペーパーバッグをつける(+¥500/個)</span>
                </label>
            </label>
        </div>
    </dd>
</dl>
h_tanaka
投稿日時: 2019/5/20 19:11
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
Re: チェックボックスのチェックが外せない
dump($form->isSubmitted());
dump($form->isValid());
してみたところ、どちらも false が返ってきました。
チェックボックスをOFFにしたときは残りのフォームを disabled にしていますが、この場合は submit でないというような判定がされちゃうのでしょうか...?


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

h_tanaka
投稿日時: 2019/5/20 19:32
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
Re: チェックボックスのチェックが外せない
一応、自己解決しました。

有効な値のフォームがないと submit と判定されないようなので、無理やり意味のない値を持つ隠しフォームを作成しました。

スマートなやり方でないと思うので、他に良い方法ありましたらお教えいただきたいです。

app/Customize/Form/Type/PaperBagType.php
            ->add('tmp', HiddenType::class, [
                'required' => false,
                'mapped' => false,
                'data' => 1,
            ])


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

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


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は49,414名です
総投稿数は93,180件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1967
4
468
1818
5
yuh
1602
6
red
1342
7
umebius
1296
8
fukap
907
9
h_tanaka
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
774
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

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