2017-01-10 9 views
0

タイトルがあまり明確でないため、私はよりよく説明します: CustomerRegisterフォームを編集していくつかのフィールドを追加しました。DefaultAdressフィールドもあります(defaultAddressはCustomerにリンクされたオブジェクトです - CustomerObjectにはgetDefaultAdresseメソッドがあります)。私はそれを行う方法がわからないCustomer Syliusフォーム(symfony3)でDefaultAdressフィールドを追加する方法

DefaultAddressオブジェクト内にあるすべてのフィールド(道路、国、など)を追加したいと思います...

を私がするCustomerRegistrationTypeExtensionを変更する必要がありますかアドレスのフィールドを追加しますか? 私のtwigファイルのフィールドを呼び出すにはどうすればいいですか?そのように:{{ form_row(form.defaultAddress.street) }}

私はこのケースを説明する文書が見つかりませんでした。

ありがとうございました!

+0

あなたの顧客オブジェクトをあなたのコントローラーからあなたのtwigファイルにどのように渡していますか? '$ this-> render( 'mytwig.html.twig'、array( 'customer' => $ customer)));'あなたのコードを表示できますか? –

+0

私はコントローラを持っていません、私はSylius Entity Customer、Extensionを持つフォームCustomerRegistrationTypeを拡張します。私はシリウスにどのコントローラーが使われているのかを知りませんでした。 – wyllyjon

+0

あなたのソリューションは良いと思う、あなたはそれを試してみましたか? –

答えて

4

説明したとおり、CustomerRegistrationTypeExtensionを作成する必要があります。この拡張機能の内部では、単に実行します。私は私達の標準アドレス形式のテンプレートを使用してお勧めします

{{ form_widget(form.defaultAddress) }} 

use Sylius\Bundle\AddressingBundle\Form\Type\AddressType; 

$builder->add('defaultAddress', AddressType::class) 

を次にテンプレートをオーバーライドして、あなたがフィールドやフォーム全体をレンダリングすることができるはずです単にそれを含めることによって:

{% include '@SyliusShop/Common/Form/_address.html.twig' with {'form': form.defaultAddress} %} 
+0

ああ、そうです!非常に素晴らしい !うまくいく! defaultAddressを追加しようとしましたが、 "getDefaultAddressメソッドが見つかりません"というエラーがありました。しかし、FormExtensionの代わりに直接Sylius FormTypeにadd( 'defaultAddress')を追加したことが分かりました。 Thks Pawel、そしてあなたの素敵な仕事のためのススキー! :) – wyllyjon

+0

よろしくお願いします!シリウスをご利用いただきありがとうございます! ;) –

関連する問題