WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
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 %}
<!-- 省略 -->