質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

0回答

582閲覧

EC-CUBE3の管理画面(会員登録)に、フォームを追加したい

Makoto_Uno

総合スコア8

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2018/12/09 05:32

EC-CUBE3のプラグインを開発しています。

管理側の会員登録画面に、チェックボックスを1つ追加で設置したいと考えております。
EC-CUBEのサイトにのっている情報を参考に組んでみたのですが、でてきません。
どう書けば出てくるのか、教えていただけないでしょうか?

下記に階層とコードを記載します。

<B2BShop>
┣┳<Controller>
┃┃┣B2BShopController.php

namespace Plugin\B2BShop\Controller; use Eccube\Application; use Symfony\Component\HttpFoundation\Request; class B2BShopController { /** * B2BShop画面 * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { // add code... $builder = $app['form.factory']->createBuilder('b2bshop_config'); return $app->render('B2BShop/Resource/template/index.twig', array( // add parameter... )); } }

┃┃┗ConfigController.php

コードnamespace Plugin\B2BShop\Controller; use Eccube\Application; use Symfony\Component\HttpFoundation\Request; class ConfigController { /** * B2BShop用設定画面 * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { $form = $app['form.factory']->createBuilder('b2bshop_config')->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); // add code... } $builder = $app['form.factory']->createBuilder('b2bshop_config'); return $app->render('B2BShop/Resource/template/admin/config.twig', array( 'form' => $form->createView(), )); } }

<Form>
┃┣<Type>
┃┃┗B2bShopConfigType.php

namespace Plugin\B2BShop\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints as Assert; class B2BShopConfigType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('public', CheckboxType::class, array( 'label' => 'B2B顧客', 'required' => false, )); } public function getName() { return 'b2bshop_config'; } }

<Resource>
┃┣<doctrine>
┃┃┗Plugin.B2BShop.Entity.B2BShop.dcm.yml

Plugin\B2BShop\Entity\B2BShop: type: entity table: plg_is_b2b repositoryClass: Plugin\B2BShop\Repository\B2BShopRepository id: customer_id: type: integer nullable: false unsigned: false fields: is_b2b: type: boolean nullable: false lifecycleCallbacks: { }

<ServiceProvider>
┃┗CustomizeServiceProvider.php

namespace Plugin\B2BShop\Customize\ServiceProvider; use Monolog\Logger; use Monolog\Handler\FingersCrossedHandler; use Monolog\Handler\RotatingFileHandler; use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; use Plugin\B2BShop\Form\Type\B2BShopConfigType; use Silex\Application as BaseApplication; use Silex\ServiceProviderInterface; class CustomizeServiceProvider implements ServiceProviderInterface { public function register(BaseApplication $app) { // プラグイン用設定画面 $app->match('/'.$app['config']['admin_route'].'/plugin/B2BShop/config', 'Plugin\B2BShop\Controller\ConfigController::index')->bind('plugin_B2BShop_config'); // 独自コントローラ $app->match('/plugin/b2bshop/hello', 'Plugin\B2BShop\Controller\B2BShopController::index')->bind('plugin_B2BShop_hello'); // Form $app['form.types'] = $app->share($app->extend('form.types', function ($types) use ($app) { $types[] = new B2BShopConfigType(); return $types; })); // Repository // Service // メッセージ登録 // $file = __DIR__ . '/../Resource/locale/message.' . $app['locale'] . '.yml'; // $app['translator']->addResource('yaml', $file, $app['locale']); // load config // プラグイン独自の定数はconfig.ymlの「const」パラメータに対して定義し、$app['b2bshopconfig']['定数名']で利用可能 // if (isset($app['config']['B2BShop']['const'])) { // $config = $app['config']; // $app['b2bshopconfig'] = $app->share(function () use ($config) { // return $config['B2BShop']['const']; // }); // } // ログファイル設定 $app['monolog.logger.b2bshop'] = $app->share(function ($app) { $logger = new $app['monolog.logger.class']('b2bshop'); $filename = $app['config']['root_dir'].'/app/log/b2bshop.log'; $RotateHandler = new RotatingFileHandler($filename, $app['config']['log']['max_files'], Logger::INFO); $RotateHandler->setFilenameFormat( 'b2bshop_{date}', 'Y-m-d' ); $logger->pushHandler( new FingersCrossedHandler( $RotateHandler, new ErrorLevelActivationStrategy(Logger::ERROR), 0, true, true, Logger::INFO ) ); return $logger; }); } public function boot(BaseApplication $app) { } }

┣config.yml

name: B2B_Shop code: B2BShop version: 1.0.0 service: - B2BShopServiceProvider orm.path: - /Resource/doctrine event: - /event

┣CustomizeEvent.php

namespace Plugin\B2BShop; use Eccube\Event\EventArgs; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; class CustomizeEvent { private $app; public function __construct($app) { $this->app = $app; } public function onAdminCustomerEditOneInitialize(EventArgs $event) { $builder = $event->getArgument('builder'); $builder->add('public', CheckboxType::class, array( 'label' => 'B2B顧客', 'required' => false, )); } }

┗event.yml

admin.customer.edit.index.initialize: - [onAdminCustomerEditOneInitialize, NORMAL]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問