EC-CUBE4 マスタテーブルの作成
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[EC-CUBEめも]]
EC-CUBE4.0.2にてマスタテーブルを新たに作成します。~
テーブル作成後、少し触ってやらないと管理画面のマスタデー...
app/Customize/ 以下に Entity と Repository をそれぞれ作成...
namespace は Eccube から Customize へ変更します。
以下のコマンドでProxyクラスを生成します。
bin/console eccube:generate:proxies
続いて実行されるSQLを確認します。
bin/console doctrine:schema:update --dump-sql
SQLを実行します。これでテーブルが作成されます。
bin/console doctrine:schema:update --dump-sql --force
namespace が Eccube\Entity のものしか読み込まないため、管...
app/Customize/Form/Extension/MasterdataTypeExtension.php
<?php
namespace Customize\Form\Extension;
use Doctrine\ORM\EntityManager;
use Eccube\Form\Type\Admin\MasterdataType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
class MasterdataTypeExtension extends AbstractTypeExtens...
{
private $entityManager;
public function __construct(EntityManager $entityMan...
{
$this->entityManager = $entityManager;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $buil...
{
$masterdata = [];
/** @var MappingDriverChain $driverChain */
$driverChain = $this->entityManager->getConfigur...
/** @var MappingDriver[] $drivers */
$drivers = $driverChain->getDrivers();
foreach ($drivers as $namespace => $driver) {
if ($namespace == 'Eccube\Entity' || $namesp...
$classNames = $driver->getAllClassNames();
foreach ($classNames as $className) {
/** @var ClassMetadata $meta */
$meta = $this->entityManager->getMet...
if (strpos($meta->rootEntityName, 'M...
&& $meta->hasField('id')
&& $meta->hasField('name')
&& $meta->hasField('sort_no')
) {
$metadataName = str_replace('\\'...
$masterdata[$metadataName] = $me...
}
}
}
}
$options = $builder->get('masterdata')->getOptio...
$options['choices'] = array_flip($masterdata);
$builder
->add('masterdata', ChoiceType::class, $opti...
}
/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return MasterdataType::class;
}
}
終了行:
[[EC-CUBEめも]]
EC-CUBE4.0.2にてマスタテーブルを新たに作成します。~
テーブル作成後、少し触ってやらないと管理画面のマスタデー...
app/Customize/ 以下に Entity と Repository をそれぞれ作成...
namespace は Eccube から Customize へ変更します。
以下のコマンドでProxyクラスを生成します。
bin/console eccube:generate:proxies
続いて実行されるSQLを確認します。
bin/console doctrine:schema:update --dump-sql
SQLを実行します。これでテーブルが作成されます。
bin/console doctrine:schema:update --dump-sql --force
namespace が Eccube\Entity のものしか読み込まないため、管...
app/Customize/Form/Extension/MasterdataTypeExtension.php
<?php
namespace Customize\Form\Extension;
use Doctrine\ORM\EntityManager;
use Eccube\Form\Type\Admin\MasterdataType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
class MasterdataTypeExtension extends AbstractTypeExtens...
{
private $entityManager;
public function __construct(EntityManager $entityMan...
{
$this->entityManager = $entityManager;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $buil...
{
$masterdata = [];
/** @var MappingDriverChain $driverChain */
$driverChain = $this->entityManager->getConfigur...
/** @var MappingDriver[] $drivers */
$drivers = $driverChain->getDrivers();
foreach ($drivers as $namespace => $driver) {
if ($namespace == 'Eccube\Entity' || $namesp...
$classNames = $driver->getAllClassNames();
foreach ($classNames as $className) {
/** @var ClassMetadata $meta */
$meta = $this->entityManager->getMet...
if (strpos($meta->rootEntityName, 'M...
&& $meta->hasField('id')
&& $meta->hasField('name')
&& $meta->hasField('sort_no')
) {
$metadataName = str_replace('\\'...
$masterdata[$metadataName] = $me...
}
}
}
}
$options = $builder->get('masterdata')->getOptio...
$options['choices'] = array_flip($masterdata);
$builder
->add('masterdata', ChoiceType::class, $opti...
}
/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return MasterdataType::class;
}
}
ページ名: