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

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

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

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

Symfony

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

EC-CUBE

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

Q&A

解決済

1回答

29509閲覧

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

dauto

総合スコア38

PHP

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

Symfony

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

EC-CUBE

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

0グッド

0クリップ

投稿2020/07/05 17:45

編集2020/07/05 23:22

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

Error

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

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

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

template

1{# 2This file is part of EC-CUBE 3 4Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved. 5 6http://www.ec-cube.co.jp/ 7 8For the full copyright and license information, please view the LICENSE 9file that was distributed with this source code. 10#} 11{% extends '@admin/default_frame.twig' %} 12 13{% set menus = ['live', 'authority'] %} 14 15{% block title %} 16 配信権限登録 17{% endblock %} 18{% block sub_title %} 19 {{ 'admin.setting.system'|trans }} 20{% endblock %} 21 22{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} 23 24{% block main %} 25 <form name="member_form" role="form" id="member_form" method="post" action="" novalidate> 26 {{ form_widget(form._token) }} 27 <div class="c-contentsArea__cols"> 28 <div class="c-contentsArea__primaryCol"> 29 <div class="c-primaryCol"> 30 <div class="card rounded border-0 mb-4"> 31 <div class="card-header"> 32 <div class="row"> 33 <div class="col-8"> 34 <span class="card-title">{{ 'admin.setting.system.member.member_registration'|trans }}</span> 35 </div> 36 <div class="col-4 text-right"> 37 <a data-toggle="collapse" href="#memberInfo" aria-expanded="false" aria-controls="memberInfo"> 38 <i class="fa fa-angle-up fa-lg"></i> 39 </a> 40 </div> 41 </div> 42 </div> 43 <div class="collapse show ec-cardCollapse" id="memberInfo"> 44 <div class="card-body"> 45 <div class="row mb-2"> 46 <div class="col-3"> 47 <span>チャンネル名</span> 48 <span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span> 49 </div> 50 <div class="col"> 51 <div class="row"> 52 <div class="col"> 53 {{ form_widget(form.Channel) }} 54 </div> 55 {{ form_errors(form.Channel) }} 56 </div> 57 </div> 58 </div> 59 60 <div class="row mb-2"> 61 <div class="col-3"> 62 <span>条件</span> 63 <span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span> 64 </div> 65 <div class="col"> 66 <div class="row"> 67 <div class="col"> 68 {{ form_widget(form.live_condition) }} 69 </div> 70 {{ form_errors(form.live_condition) }} </div> 71 </div> 72 </div> 73 74 <div class="row mb-2"> 75 <div class="col-3"> 76 <span>条件の組み合わせ</span> 77 <span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span> 78 </div> 79 <div class="col"> 80 <div class="row"> 81 <div class="col"> 82 {{ form_widget(form.Combination) }} 83 </div> 84 {{ form_errors(form.Combination) }} 85 </div> 86 </div> 87 </div> 88 {# エンティティ拡張の自動出力 #} 89 {% for f in form if f.vars.eccube_form_options.auto_render %} 90 {% if f.vars.eccube_form_options.form_theme %} 91 {% form_theme f f.vars.eccube_form_options.form_theme %} 92 {{ form_row(f) }} 93 {% else %} 94 <div class="row mb-2"> 95 <div class="col-3"> 96 <span>{{ f.vars.label|trans }}</span> 97 </div> 98 <div class="col"> 99 {{ form_widget(f) }} 100 {{ form_errors(f) }} 101 </div> 102 </div> 103 {% endif %} 104 {% endfor %} 105 </div> 106 </div> 107 </div> 108 </div> 109 </div> 110 </div> 111 112 <div class="c-conversionArea"> 113 <div class="c-conversionArea__container"> 114 <div class="row justify-content-between align-items-center"> 115 <div class="col-6"> 116 <div class="c-conversionArea__leftBlockItem"> 117 <a class="c-baseLink" href="{{ url('admin_setting_system_member') }}"> 118 <i class="fa fa-backward" aria-hidden="true"></i> 119 <span>{{ 'admin.setting.system.member_management'|trans }}</span> 120 </a> 121 </div> 122 </div> 123 <div class="col-6"> 124 <div id="ex-conversion-action" class="row align-items-center justify-content-end"> 125 <div class="col-auto"> 126 <button class="btn btn-ec-conversion px-5" type="submit">{{ 'admin.common.registration'|trans }}</button> 127 </div> 128 </div> 129 </div> 130 </div> 131 </div> 132 </div> 133 </form> 134{% endblock %}

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

1<?php 2 3namespace Customize\Entity; 4 5use Customize\Entity\Master\Combination; 6use DateTime; 7use Doctrine\ORM\Mapping as ORM; 8use Eccube\Entity\Member; 9use Grpc\Channel; 10 11/** 12 * AuthorityRole 13 * 14 * @ORM\Table(name="dtb_live_authority_role") 15 * @ORM\InheritanceType("SINGLE_TABLE") 16 * @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255) 17 * @ORM\HasLifecycleCallbacks() 18 * @ORM\Entity(repositoryClass="Customize\Repository\LiveAuthorityRoleRepository") 19 */ 20class LiveAuthorityRole extends \Eccube\Entity\AbstractEntity 21{ 22 23 /** 24 * @var Channel 25 * 26 * @ORM\ManyToOne(targetEntity="Customize\Entity\LiveChannel") 27 * @ORM\JoinColumns({ 28 * @ORM\JoinColumn(name="channel_id", referencedColumnName="id") 29 * }) 30 */ 31 private $Channel; 32 33 /** 34 * Set channel. 35 * 36 * @param Channel|null $channel 37 * 38 * @return LiveAuthorityRole 39 */ 40 public function setChannel(Channel $channel = null) 41 { 42 $this->Channel = $channel; 43 44 return $this; 45 } 46 47 /** 48 * Get channel. 49 * 50 * @return Channel 51 */ 52 public function getChannel() 53 { 54 return $this->Channel; 55 } 56}

FormType

1<?php 2 3/* 4 * This file is part of EC-CUBE 5 * 6 * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved. 7 * 8 * http://www.ec-cube.co.jp/ 9 * 10 * For the full copyright and license information, please view the LICENSE 11 * file that was distributed with this source code. 12 */ 13 14namespace Customize\Form\Type\Admin; 15 16use Symfony\Bridge\Doctrine\Form\Type\EntityType; 17use Symfony\Component\Form\AbstractType; 18use Symfony\Component\Form\CallbackTransformer; 19use Symfony\Component\Form\Extension\Core\Type\TextType; 20use Symfony\Component\Form\FormBuilderInterface; 21use Symfony\Component\Form\FormError; 22use Symfony\Component\Form\FormEvent; 23use Symfony\Component\Form\FormEvents; 24use Symfony\Component\OptionsResolver\OptionsResolver; 25use Symfony\Component\Validator\Constraints\Regex; 26use Symfony\Component\Validator\Constraints\Length; 27use Eccube\Common\EccubeConfig; 28use Customize\Form\Type\Master\CombinationType; 29 30class LiveAuthorityRoleType extends AbstractType 31{ 32 /** 33 * @var EccubeConfig 34 */ 35 protected $eccubeConfig; 36 37 public function __construct(EccubeConfig $eccubeConfig) 38 { 39 $this->eccubeConfig = $eccubeConfig; 40 } 41 42 /** 43 * {@inheritdoc} 44 */ 45 public function buildForm(FormBuilderInterface $builder, array $options) 46 { 47 $builder 48 ->add('Channel', EntityType::class, [ 49 'class' => 'Customize\Entity\LiveChannel', 50 'expanded' => false, 51 'multiple' => false, 52 'required' => true, 53 "mapped" => false, 54 'choice_label' => 'name', 55 ]) 56 ->add('Combination', CombinationType::class, [ 57 'required' => true, 58 ]) 59 ->add('live_condition', TextType::class, [ 60 'required' => true, 61 'constraints' => [ 62 new Length(['max' => $this->eccubeConfig['eccube_stext_len']]), 63 ], 64 ]) 65 ->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { 66 $form = $event->getForm(); 67 68 $Channel = $form['Channel']->getData(); 69 $condition = $form['live_condition']->getData(); 70 71 if (!$Channel && !empty($condition)) { 72 $form['Channel']->addError(new FormError(trans('admin.setting.system.authority.authority_not_selected'))); 73 } elseif ($Channel && empty($condition)) { 74 $form['live_condition']->addError(new FormError(trans('admin.setting.system.authority.deny_url_is_empty'))); 75 } 76 }); 77 } 78 79 /** 80 * {@inheritdoc} 81 */ 82 public function configureOptions(OptionsResolver $resolver) 83 { 84 $resolver->setDefaults([ 85 'data_class' => 'Customize\Entity\LiveAuthorityRole', 86 ]); 87 } 88 89 /** 90 * {@inheritdoc} 91 */ 92 public function getBlockPrefix() 93 { 94 return 'admin_live_authority_role'; 95 } 96}

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

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

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

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

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

m.ts10806

2020/07/05 20:36

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

2020/07/05 23:28

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

回答1

0

ベストアンサー

"mapped" => false になっているため、 Entity に bind されていないのだと思われます

投稿2020/07/17 00:37

nanasess

総合スコア97

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問