EC-CUBE3.0.15
こちらのスレッドを参考に、会員情報に国項目を追加しました。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=19334&forum=19表示とDB保存はうまくいったのですが、DBに保存した情報を表示する方法がわかりません。
どうすれば表示されるようになるでしょうか?
フォームの 'data' に対してDB情報を設定すればよさそうですが、DB情報の取得方法がわからないでいます。
src/Eccube/ServiceProvider/EccubeServiceProvider.php
$types[] = new \Eccube\Form\Type\Master\CountryType($app['orm.em']); // 国
src/Eccube/Form/Type/Master/CountryType.php
namespace Eccube\Form\Type\Master;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class CountryType extends AbstractType
{
public function __construct(\Doctrine\ORM\EntityManager $em) {
$this->em = $em;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'label' => '国',
'class' => 'Eccube\Entity\Master\Country',
'data' => $this->em->getReference("Eccube\Entity\Master\Country", 392), // 初期値は日本 →★ これをコメントアウトすればDB情報が反映される
));
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'eccube_country';
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return 'master';
}
}
src/Eccube/Form/Type/Front/EntryType.php
class EntryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('country', 'eccube_country', array(
'required' => false,
));
}
}
app/template/default/Mypage/change.twig
<dl id="detail_box__address_detail">
<dt>{{ form_label(form.address) }}</dt>
<dd>
<div id="detail_box__country" class="form-group form-inline {% if form.country.vars.errors is not empty %}has-error{% endif %}">{{ form_widget(form.country) }}</div> {# ★ 追加 ★ #}
<div id="detail_box__zip" class="form-group form-inline input_zip {% if form.zip.zip01.vars.errors is not empty or form.zip.zip02.vars.errors is not empty %}has-error{% endif %}">{{ form_widget(form.zip) }}</div>
<div id="detail_box__address" class="{% if form.address.pref.vars.errors is not empty or form.address.addr01.vars.errors is not empty or form.address.addr02.vars.errors is not empty %}has-error{% endif %}">
{{ form_widget(form.address) }}
{{ form_errors(form.address) }}
</div>
</dd>
</dl>
----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。