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

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

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

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

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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

解決済

Symfonyのセレクトボックスを選択しても値が空のまま送信される

dauto
dauto

総合スコア38

PHP

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

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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

1回答

0評価

0クリップ

27098閲覧

投稿2020/07/05 17:45

編集2020/07/05 23:22

Symfony3(EC-CUBE4)でフォームを作成したのですが、フォームのセレクトボックスを選択しても以下のエラー通り、値がnullのまま送信されてしまいます。

Error

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'channel_id' cannot be null

値を送信するにはどうしたらいいでしょうか。ご助言よろしくお願いします。

関連するtemplate、Entity、FormTypeは以下になります。

template

{# This file is part of EC-CUBE Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved. http://www.ec-cube.co.jp/ For the full copyright and license information, please view the LICENSE file that was distributed with this source code. #} {% extends '@admin/default_frame.twig' %} {% set menus = ['live', 'authority'] %} {% block title %} 配信権限登録 {% endblock %} {% block sub_title %} {{ 'admin.setting.system'|trans }} {% endblock %} {% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} {% block main %} <form name="member_form" role="form" id="member_form" method="post" action="" novalidate> {{ form_widget(form._token) }} <div class="c-contentsArea__cols"> <div class="c-contentsArea__primaryCol"> <div class="c-primaryCol"> <div class="card rounded border-0 mb-4"> <div class="card-header"> <div class="row"> <div class="col-8"> <span class="card-title">{{ 'admin.setting.system.member.member_registration'|trans }}</span> </div> <div class="col-4 text-right"> <a data-toggle="collapse" href="#memberInfo" aria-expanded="false" aria-controls="memberInfo"> <i class="fa fa-angle-up fa-lg"></i> </a> </div> </div> </div> <div class="collapse show ec-cardCollapse" id="memberInfo"> <div class="card-body"> <div class="row mb-2"> <div class="col-3"> <span>チャンネル名</span> <span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span> </div> <div class="col"> <div class="row"> <div class="col"> {{ form_widget(form.Channel) }} </div> {{ form_errors(form.Channel) }} </div> </div> </div> <div class="row mb-2"> <div class="col-3"> <span>条件</span> <span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span> </div> <div class="col"> <div class="row"> <div class="col"> {{ form_widget(form.live_condition) }} </div> {{ form_errors(form.live_condition) }} </div> </div> </div> <div class="row mb-2"> <div class="col-3"> <span>条件の組み合わせ</span> <span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span> </div> <div class="col"> <div class="row"> <div class="col"> {{ form_widget(form.Combination) }} </div> {{ form_errors(form.Combination) }} </div> </div> </div> {# エンティティ拡張の自動出力 #} {% for f in form if f.vars.eccube_form_options.auto_render %} {% if f.vars.eccube_form_options.form_theme %} {% form_theme f f.vars.eccube_form_options.form_theme %} {{ form_row(f) }} {% else %} <div class="row mb-2"> <div class="col-3"> <span>{{ f.vars.label|trans }}</span> </div> <div class="col"> {{ form_widget(f) }} {{ form_errors(f) }} </div> </div> {% endif %} {% endfor %} </div> </div> </div> </div> </div> </div> <div class="c-conversionArea"> <div class="c-conversionArea__container"> <div class="row justify-content-between align-items-center"> <div class="col-6"> <div class="c-conversionArea__leftBlockItem"> <a class="c-baseLink" href="{{ url('admin_setting_system_member') }}"> <i class="fa fa-backward" aria-hidden="true"></i> <span>{{ 'admin.setting.system.member_management'|trans }}</span> </a> </div> </div> <div class="col-6"> <div id="ex-conversion-action" class="row align-items-center justify-content-end"> <div class="col-auto"> <button class="btn btn-ec-conversion px-5" type="submit">{{ 'admin.common.registration'|trans }}</button> </div> </div> </div> </div> </div> </div> </form> {% endblock %}

Entity(文字数制限に引っかかったため一部切り抜き)

<?php namespace Customize\Entity; use Customize\Entity\Master\Combination; use DateTime; use Doctrine\ORM\Mapping as ORM; use Eccube\Entity\Member; use Grpc\Channel; /** * AuthorityRole * * @ORM\Table(name="dtb_live_authority_role") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255) * @ORM\HasLifecycleCallbacks() * @ORM\Entity(repositoryClass="Customize\Repository\LiveAuthorityRoleRepository") */ class LiveAuthorityRole extends \Eccube\Entity\AbstractEntity { /** * @var Channel * * @ORM\ManyToOne(targetEntity="Customize\Entity\LiveChannel") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="channel_id", referencedColumnName="id") * }) */ private $Channel; /** * Set channel. * * @param Channel|null $channel * * @return LiveAuthorityRole */ public function setChannel(Channel $channel = null) { $this->Channel = $channel; return $this; } /** * Get channel. * * @return Channel */ public function getChannel() { return $this->Channel; } }

FormType

<?php /* * This file is part of EC-CUBE * * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved. * * http://www.ec-cube.co.jp/ * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Customize\Form\Type\Admin; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\Regex; use Symfony\Component\Validator\Constraints\Length; use Eccube\Common\EccubeConfig; use Customize\Form\Type\Master\CombinationType; class LiveAuthorityRoleType extends AbstractType { /** * @var EccubeConfig */ protected $eccubeConfig; public function __construct(EccubeConfig $eccubeConfig) { $this->eccubeConfig = $eccubeConfig; } /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('Channel', EntityType::class, [ 'class' => 'Customize\Entity\LiveChannel', 'expanded' => false, 'multiple' => false, 'required' => true, "mapped" => false, 'choice_label' => 'name', ]) ->add('Combination', CombinationType::class, [ 'required' => true, ]) ->add('live_condition', TextType::class, [ 'required' => true, 'constraints' => [ new Length(['max' => $this->eccubeConfig['eccube_stext_len']]), ], ]) ->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $Channel = $form['Channel']->getData(); $condition = $form['live_condition']->getData(); if (!$Channel && !empty($condition)) { $form['Channel']->addError(new FormError(trans('admin.setting.system.authority.authority_not_selected'))); } elseif ($Channel && empty($condition)) { $form['live_condition']->addError(new FormError(trans('admin.setting.system.authority.deny_url_is_empty'))); } }); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => 'Customize\Entity\LiveAuthorityRole', ]); } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'admin_live_authority_role'; } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2020/07/05 20:36

htmlが提示されていませんがview側の問題は全くないという根拠をご提示ください。
dauto

2020/07/05 23:28

view側に問題があるという考えに至らなかったので提示していませんでした。 先程twigを追記しましたのでご確認よろしくお願いします。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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