Blog スタッフブログ

EC-CUBE システム開発

[EC-CUBE]管理画面のフォームの項目追加

システム開発担当のTFです。

※EC-CUBE4系統対応

やり方

  • カラムを追加する( 以前の要参照。[今回は、boolean型のdeliveredのカラムとする] )
  • 追加したカラムを、FormExtensionを使ってフォームを拡張する
  • twigで、form_widget でフォームを利用する

参考

  [EC-CUBE]EC-CUBE4のOrderItemのカラム追加と購入時データの保存方法
  FormTypeのカスタマイズ

サンプル

カラム追加は省略

<?php

namespace Customize\Form\Extension\Admin;

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

use Eccube\Form\Type\Admin\OrderItemType;

use Symfony\Component\Form\Extension\Core\Type;

class OrderItemTypeExtension extends AbstractTypeExtension
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
		// 追加するフォーム項目の設定
		$builder->add("delivered",Type\ChoiceType::class,[
			'expanded' => false,
			'multiple' => false,
			'required' => false,
			'choices' => ['未発送'=>'0', '発送済み'=>'1'],
		]);
    }

	/**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
		// OrderItemTypeを拡張する
        return OrderItemType::class;
    }
	
	/**
     * {@inheritdoc}
     */
    public static function getExtendedTypes(): iterable
    {
		// OrderItemTypeを拡張する
        yield OrderItemType::class;
    }
}
<!-- 省略 -->

{% for orderItemForm in form.OrderItems %}
	{% set OrderItem = orderItemForm.vars.data %}
	<tr>
		<!-- 省略 -->
		
		<!-- 追加したフォームの設定 -->
		<td class="align-middle">
			<div class="col-12">
				{% if OrderItem.isProduct %}
					{{ form_widget(orderItemForm.delivered) }}
				{% endif %}
			</div>
		</td>
		
		<!-- 省略 -->
	</tr>
{% endfor %}

<!-- 省略 -->