バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 在庫情報が更新できない

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2020/10/26 17:07
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: 在庫情報が更新できない
本件、自己解決しました。

StockController 更新時にも FormType の呼び出し時に data パラメータを指定することで動作するようになりました。
なぜこのような修正でうまく動作するようになったのかの原因はわかりません。
原因わかる方いらっしゃいますでしょうか?

$builder
    ->add('product_classes', 'collection', array(
        'type' => 'admin_product_stock',
        'data' => $ProductClasses,  // ★ここを追加
    ));


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

h_tanaka
投稿日時: 2020/9/14 17:21
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
在庫情報が更新できない
EC-CUBE 3.0.15

商品規格登録ページを参考に、商品の在庫情報のみを更新するページを作成しています。

ProductClassController を参考に StockController を作成したのですが、登録ボタンを押すと「フィールドグループに追加のフィールドを含んではなりません。」というフォームエラーが発生してしまいます。
上記の在庫情報以外にフォームを追加していませんし、イベントも発行していないためプラグインも呼ばれていないはずです。
このエラーが出る原因わかりますでしょうか?

ProductStockType を新規に作成し、在庫数と在庫無制限チェックボックスを定義しました。
public function buildForm(FormBuilderInterface $builder, array $options)
{
   $builder
       // 商品規格情報
       ->add('stock', 'number', array(
           'label' => '在庫数',
           'required' => false,
           'constraints' => array(
               new Assert\Regex(array(
                   'pattern' => "/^\d+$/u",
                   'message' => 'form.type.numeric.invalid'
               )),
           ),
       ))
   ;

   $transformer = new DataTransformer\IntegerToBooleanTransformer();

   $builder
       ->add($builder->create('stock_unlimited', 'checkbox', array(
           'label' => '無制限',
           'value' => '1',
           'required' => false,
       ))->addModelTransformer($transformer));
}


StockController 表示時
$ProductClasses = $app['eccube.repository.product_class']->findBy(array(
    'del_flg' => \Eccube\Common\Constant::DISABLED,
    'Product' => $Product,
));

/* @var FormBuilder $builder */
$builder = $app['form.factory']->createBuilder();
$builder
    ->add('product_classes', 'collection', array(
        'type' => 'admin_product_stock',
        'data' => $ProductClasses,
    ));

$productClassForm = $builder->getForm();


stock_edit.twig
<form role="form" name="form1" id="form1" method="post" action="{{ url('admin_product_stock_update', { id : Product.id}) }}">
{{ form_widget(classForm._token) }}
{% for product_stock_form in classForm.product_classes %}
    {{ form_widget(product_stock_form.stock) }}
    {{ form_errors(product_stock_form.stock) }}
    {{ form_widget(product_stock_form.stock_unlimited) }}
    {{ form_errors(product_stock_form.stock_unlimited) }}
{% endfor %}
</form>


StockController 更新時
/* @var FormBuilder $builder */
$builder = $app['form.factory']->createBuilder();
$builder
    ->add('product_classes', 'collection', array(
        'type' => 'admin_product_stock',
    ));

$form = $builder->getForm();
$form->handleRequest($request);
dump($form);    // ★フォームエラーが発生している
if ($form->isSubmitted()) {
    foreach ($form->get('product_classes') as $formData) {
        // ★ここの処理に来ない
    }
}


handleRequest() 後に dump($form); してみたときのフォームエラーの詳細は次のとおりです。
-message: "フィールドグループに追加のフィールドを含んではなりません。"
#messageTemplate: "This form should not contain extra fields."
#messageParameters: array:1 [▼
  "{{ extra_fields }}" => "0", "1"
]
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,281名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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