基本環境
EC-CUBE4.2.3
関連ファイル
プラグイン名:PluginName
追加したデータベース:plg_plugin_name_hoge
リレーションするデータベース:dtb_huga
Entityで追加データベースを作成
<?php
namespace Plugin\PluginName\Entity;
use Doctrine\ORM\Mapping as ORM;
if (!class_exists('\Plugin\PluginName\Entity\PluginNameHoge')) {
/**
* PluginNameHoge
*
* @ORM\Table(name="plg_plugin_name_hoge")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
* @ORM\HasLifecycleCallbacks()
* @ORM\Entity(repositoryClass="Plugin\PluginName\Repository\PluginNameHogeRepository")
*/
class PluginNameHoge extends \Eccube\Entity\AbstractEntity
{
}
初期データを書き込む
<?php
namespace Plugin\PluginName;
use Eccube\Plugin\AbstractPluginManager;
use Eccube\Entity\Master\AbstractMasterEntity;
use Eccube\Entity\Master\HugaType;
use Plugin\PluginName\Entity\Master\PluginNameHoge;
use Symfony\Component\DependencyInjection\ContainerInterface;
class PluginManager extends AbstractPluginManager
{
// プラグイン有効化時に走る設定
/**
*
* @param array $meta
* @param ContainerInterface $container
*/
public function enable(array $meta, ContainerInterface $container)
{
$this->createPluginNameHoge($container);
}
// 設定情報を入れる
/**
*
* @param ContainerInterface $container
*
* @param \Plugin\PluginName\Entity\Master\Plugin\PluginNameHugaType $id
*/
private function createPluginNameHoge(ContainerInterface $container)
{
$em = $container->get('doctrine.orm.entity_manager');
$Config = $em->find(PluginNameHoge::class, 1);
if($Config) return; // すでにINSERTされてたら後続処理を行わない
$Config = new PluginNameHoge();
// ここにデータを入れていく
$em->persist($Config);
$em->flush($Config);
}
追加するデータ
integer型を入力する
$Config->setSortNo(1);
sort_no
というカラムに1
というinteger型数値を追加
string型を入力する
$Config->setFieldName('id');
field_name
というカラムにid
というstring型文字を追加
string型を入力する(スラッシュ入り)
$Config->setEntityName('Eccube\\\Entity\\\Product');
entity_name
というカラムにEccube\\Entity\\Product
というstring型文字を追加
※スラッシュを1個増やす
リレーション型を入力する(その1)
$em = $container->get('doctrine.orm.entity_manager');
$HugaType = $em->getRepository(HugaType::class)
->find(HugaType::HUGA_TYPE_PRODUCT);
$Config->setHugaType($HugaType);
huga_type_id
というカラムにdtb_huga_type
というテーブルのid
をリレーションする
以下のType.phpを参照
class HugaType extends \Eccube\Entity\Master\AbstractMasterEntity
{
/**
* @var integer
*/
public const CSV_TYPE_PRODUCT = 1;
/**
* @var integer
*/
public const CSV_TYPE_CUSTOMER = 2;
/**
* @var integer
*/
public const CSV_TYPE_ORDER = 3;
/**
* @var integer
*/
public const CSV_TYPE_SHIPPING = 4;
/**
* @var integer
*/
public const CSV_TYPE_CATEGORY = 5;
}
CSV_TYPE_PRODUCT
を設定するとhuga_type_id
に1
がリレーションされる
リレーション型を入力する(その2)
$em = $container->get('doctrine.orm.entity_manager');
$DeliveryId = $em->getRepository(Delivery::class)
->find(1);
$Config->setDelivery($DeliveryId);
delivery_id
というカラムにdtb_delivery
というテーブルのid(1)
をリレーションする
TWIGファイルURLを入力する
$Config->setFileName('PluginName/Resource/template/default/Hoge/hoge.twig');
デフォルトでEC-CUBE管理画面から編集できるtwigファイルをプラグインで上書きする場合は、
PluginName/Resource/template/default/Hoge/hoge.twig
という書き方をすると、管理画面から編集できる。
初期段階では、
eccube-root/app/Plugin/PluginName/Resource/template/default/Hoge/hoge.twig
から読み込み、管理画面で編集、登録すると、
eccube-root/app/template/default/PluginName/Resource/template/default/Hoge/hoge.twig
にファイルを作成・保存し、次回以降はこちらを編集できる
PluginManager.php
<?php
namespace Plugin\PluginName;
use Eccube\Plugin\AbstractPluginManager;
use Eccube\Entity\Master\AbstractMasterEntity;
use Eccube\Entity\Master\HugaType;
use Plugin\PluginName\Entity\Master\PluginNameHoge;
use Symfony\Component\DependencyInjection\ContainerInterface;
class PluginManager extends AbstractPluginManager
{
/**
* プラグイン有効化時に走る
* @param array $meta
* @param ContainerInterface $container
*/
public function enable(array $meta, ContainerInterface $container)
{
$this->createPluginNameHoge($container);
}
/**
* 設定情報を入れる
* @param ContainerInterface $container
*
* @param \Plugin\PluginName\Entity\Master\Plugin\PluginNameHugaType $id
*/
private function createPluginNameHoge(ContainerInterface $container)
{
$em = $container->get('doctrine.orm.entity_manager');
$Config = $em->find(PluginNameHoge::class, 1);
if($Config) return; // すでにINSERTされてたら後続処理を行わない
$Config = new PluginNameHoge();
// integer型を入力する
$Config->setSortNo(1);
// string型を入力する
$Config->setFieldName('id');
// string型を入力する(スラッシュ入り)
$Config->setEntityName('Eccube\\\Entity\\\Product');
// 他のデータベースからのリレーションを入力する その1
$HugaType = $em->getRepository(HugaType::class)
->find(HugaType::HUGA_TYPE_PRODUCT);
$Config->setHugaType($HugaType);
// 他のデータベースからのリレーションを入力する その2
$DeliveryId = $em->getRepository(Delivery::class)
->find(1);
$Config->setDelivery($DeliveryId);
$em->persist($Config);
$em->flush($Config);
}