バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > フロント機能 > 必須項目を解除したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
lightning
投稿日時: 2017/4/5 12:14
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
必須項目を解除したい
[EC-CUBE] 3.0.13 新規インストール
[レンタルサーバ] sakura
[OS] Apache/2.2.31
[PHP] 5.6.30
[データベース] SQLite version 3.8.10.2(テストサイトのため)
[WEBサーバ] FreeBSD 9.1-RELEASE-p24
[ブラウザ] safari 10.1
[導入プラグインの有無] 自作
[カスタマイズの有無] 新規登録画面
[現象] 必須項目を解除したい

商品がWEBサービス利用のため、商品発送情報が必要ありません。
郵便番号、住所、電話番号を必須項目から解除したいと思っています。

こちらのサイトを参考にコードを作成しました。
http://a-zumi.net/eccube3-custom-entry/

しかしながら、実際に新規登録をしてみるとうまく行きません。
index_dev.phpにて確認してみると何れも required が true のままでした。
エラー表示は下記のとおりです。

zip
zip01,zip02 → 入力されていません

address
pref,addr01,addr02 → 入力されていません

tel → 有効な値ではありません
tel01,tel02,tel03


管理画面からの新規登録及び編集においては問題なく実現できました。
お客様情報登録において required が false にならない原因がわかりましたら
教えていただけますでしょうか。

よろしくお願いします。


フォーム部分は onmember.twig の中の下記を非表示にしています。
<dl id="detail_box__company_name">
<dl id="detail_box__address">
<dl id="detail_box__tel">



event.yml
front.entry.index.initialize:
 - [onFormFrontEntryInit, NORMAL]
front.mypage.change.index.initialize:
 - [onFormFrontMypageChangeInit, NORMAL]
admin.customer.edit.index.initialize:
 - [onFormAdminCustomerEditInit, NORMAL]


Event.php
<?php
namespace Plugin\MyCustomEntry;
use Eccube\Event\EventArgs;
class Event
{
    private $app;

    public function __construct($app)
    {
        $this->app = $app;
    }
    /**
     * 新規会員登録ページの必須項目を除外
     * @param EventArgs $event
     */
    public function onFormFrontEntryInit(EventArgs $event)
    {
        $builder = $event->getArgument('builder');
        $builder->add('tel', 'tel', array( 'required' => false ));
        $builder->add('zip', 'zip', array( 'required' => false ));
        $builder->add('address', 'address', array( 'required' => false ));
    }

    /**
     * マイページ/会員情報編集ページの必須項目を除外
     * @param EventArgs $event
     */
    public function onFormFrontMypageChangeInit(EventArgs $event)
    {
        $builder = $event->getArgument('builder');
        $builder->add('tel', 'tel', array( 'required' => false ));
        $builder->add('zip', 'zip', array( 'required' => false ));
        $builder->add('address', 'address', array( 'required' => false ));
    }

    /**
     * 管理ページの会員登録・編集ページの必須項目を除外
     * @param EventArgs $event
     */
    public function onFormAdminCustomerEditInit(EventArgs $event)
    {
        $builder = $event->getArgument('builder');
        $builder->add('tel', 'tel', array( 'required' => false ));
        $builder->add('zip', 'zip', array( 'required' => false ));
        $builder->add('address', 'address', array( 'required' => false ));
    }
}
umebius
投稿日時: 2017/4/5 21:06
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 777
Re: 必須項目を解除したい
上書きできません。
一度removeしてください。

$builder
->remove('tel')
->add('tel', 'tel', array( ...../* 好きなオプション */ ));


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


lightning
投稿日時: 2017/4/6 2:03
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
Re: 必須項目を解除したい
情報ありがとうございます。

removeをしてみたのですが状況が変わらなかったので、
イベントのタイミングを疑ってみました。

(修正前)front.entry.index.initialize:
(修正後)front.shopping.nonmember.initialize:

にしてから、$builder->add にて変更することでエラーが無くなりました。
Passed Options required は false になっています。

しかしながら、telのみエラーが発生しています。
tel 及び tel01,tel02,tel03 いずれもrequired は false なのですが、
tel のところに「有効な値ではありません。」と表示されています。

removeしてaddしてみましたが同じく「有効な値ではありません」とでます。
$builder->remove('tel')->add('tel', 'tel', array( 'required' => false ));


あと少しというところなのですが、どうぞ宜しくお願いします。


umebius
投稿日時: 2017/4/6 19:58
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 777
Re: 必須項目を解除したい
これって上書きになるんですね。
$builder->add('tel', 'tel', array( 'required' => false ));

ちゃんと書いてありました。

引用:

/**
* Adds a new field to this group. A field must have a unique name within
* the group. Otherwise the existing field is overwritten.
*
* If you add a nested group, this group should also be represented in the
* object hierarchy.
*
* @param string|int|FormBuilderInterface $child
* @param string|FormTypeInterface $type
* @param array $options
*
* @return FormBuilderInterface The builder object
*/
public function add($child, $type = null, array $options = array());


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


a-zumi
投稿日時: 2017/4/20 16:38
対応状況: −−−
新米
登録日: 2017/4/20
居住地:
投稿: 1
Re: 必須項目を解除したい
参考にされた記事を書いたものです。
すでに解決されましたでしょうか?


telの件ですが、もしかすると文字数制限に引っかかっているのかもしれません。

EC-CUBEの設定を確認したところ最低文字数が1となっていました。

こちらのページが参考になります。
https://github.com/EC-CUBE/ec-cube/blob/master/src/Eccube/Form/Type/TelType.php
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,805名です
総投稿数は83,817件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1664
4
yuh
1439
5
red
1082
6
fukap
907
7
shutta
827
8
468
817
9 ramrun 789
10
tsuji
784
11
umebius
777
12
tao_s
651
13 karin 641
14 sumida 638
15
homan
633
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.