バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > FormExtensionがうまくいきません

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shimbo
投稿日時: 2018/12/18 5:35
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 23
FormExtensionがうまくいきません
[EC-CUBE] EC-CUBE3.0.16
[レンタルサーバ] XServer
[OS] FreeBSD 9.1-RELEASE-p24
[PHP] 5.6.36
[データベース] MySQL 5.7.16
[WEBサーバ] Apache
[ブラウザ] Chrome
[導入プラグインの有無] 自作中
[現象]

以下のようなコードでshoppingの画面にフォームを追加したいのですが、表示されていません。


//OrderTypeExtension.php
namespace Plugin\{プラグインコード}\Form\Extension;

use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;

class OrderTypeExtension extends AbstractTypeExtension
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(
                'plg_delivery_account', 'text', array(
                'required'=> false,
                'attr' => array(
                  'placeholder'=> 'Please enter Account No of your courier.'
                ),
                'mapped' =>false,
                )
            );
    }

    public function getExtendedType()
    {
        return 'order';
    }
}


    // {プラグインコード}ServiceProvider.php
    $app['form.type.extensions'] = $app->share($app->extend('form.type.extensions', function ($types) use ($app) {
        $types[] = new \Plugin\{プラグインコード}\Form\Extension\OrderTypeExtension();
        return $types;
    }));


index.twigでdump(Order)してみたのですが、値が入っていないようです。

Entityやデータベースには登録しないで処理をしたいのですが、そのせいでしょうか?

何かヒントを頂けたら幸いです。


468
投稿日時: 2018/12/18 9:36
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1873
Re: FormExtensionがうまくいきません
shoppingの画面とは、フロントの「ご注文内容の確認」ページの事でしょうか?
もし、上記の画面に項目を追加したいのであれば、
ShoppingTypeが利用されていますので、
getExtendedType()で指定する値は「shopping」になるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shimbo
投稿日時: 2018/12/18 20:20
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 23
Re: FormExtensionがうまくいきません
> shoppingの画面とは、フロントの「ご注文内容の確認」ページの事でしょうか?

そうです。html/shoppingの画面です。(ページの名前を変えてしまったので「ご注文内容の確認」ではなくなってしまったのですが)

商品、顧客情報、配送先情報が表示される画面です。

> getExtendedType()で指定する値は「shopping」になるのではないかと思います。
shoppingは思いつきませんでした。formの中にちゃんと追加されていましたので、こちらでなんとか実装できそうです。

後学のために伺いたいのですが、このformがshoppingだという判断は、
$builder = $app['eccube.service.shopping']->getShippingFormBuilder($Order);

において、builderがeccube.service.shoppingに由来しているから、という理解で正しいのでしょうか?

とにもかくにも、助かりました。ありがとうございます。
468
投稿日時: 2018/12/19 11:17
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1873
Re: FormExtensionがうまくいきません
まずは問題が解決されたという事で安心しました。

質問いただいたshoppingを判断した理由ですが、
$builder = $app['eccube.service.shopping']->getShippingFormBuilder($Order);

上記の記述で呼び出しているメソッド(/src/Eccube/Service/ShoppingService.php 1066行目 getShippingFormBuilder())の内容にある
$builder = $this->app['form.factory']->createBuilder('shopping', null, array(

createBuilder()の第1引数で判断しました。

今回のページについては、createBuilderはServiceクラスで実行されていますが、
他の画面の場合、コントローラーで直に呼び出されている事が多いので、
createBuilderを探せば、どのformtypeクラスを利用しているか判断できるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shimbo
投稿日時: 2018/12/19 12:14
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 23
Re: FormExtensionがうまくいきません
なるほど!

getShippingFormBuilder()の中にまで追い切れていませんでした。
ありがとうございます。

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


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は52,861名です
総投稿数は93,905件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2012
4
468
1873
5
yuh
1610
6
umebius
1371
7
red
1361
8
h_tanaka
933
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.