私のテーブルの1つからデータを生成するエンティティタイプのクラスフィールド(ドロップダウン)があります。私はユーザーがその特定のサブエージェントのための会社を選択するフォームサブエージェントを持っています。エンティティフォームからコントローラにデータを渡すSymfony3
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('company_id', EntityType::class, array(
'label' => 'Company',
'required' => true,
'class' => 'OnlyBundle\Entity\Company',
'choice_label' => 'name', // The Company Name
'choice_value' => 'id', // The Company ID (unique) to be inserted in DB
'expanded' => false,
'multiple' => false,
'placeholder' => 'Choose a Company',
'constraints' => array(
new NotBlank(array("message" => 'Company name is required.')),
),
));
このエンティティは以下のように小枝を生成します。
<select id="sub_agent_company_id" name="sub_agent[company_id]" required="required">
<option value="" selected="selected">Choose a Company</option>
<option value="20">ABC</option>
<option value="21">EFG</option>
<option value="22">HIJ</option>
</select>
は私が渡したり、私のコントローラに、ドロップダウン・フィールド(20、21、22)の値を設定したいのですが、問題は、ドロップダウン私の会社クラスからオブジェクトを返します。コントローラ全体ではなく、どのようにドロップダウンの値だけを渡すのですか?
ここは私のコントローラです。
public function createAction(Request $request) {
$sub_agent = new Sub_agent;
$form = $this->createForm(SubAgentType::class, $sub_agent, array(
'action'=>$this->generateUrl('swipe_backend_sub_agent_create'),
'method'=>'POST'
));
$form->handleRequest($request);
if ('POST' === $request->getMethod()) {
$data = $form->getData();
$sub_agent_name = $data->getName();
var_dump($data->getCompanyId()); exit;
..../
なぜ、doctrineは、コントローラに渡すとすぐにオプションの値をキャッチしませんか?データベースにデータを挿入しようとすると、 'company_id'は(20,21,22)\ のようなオプションの値の代わりに' {} 'の値を取得するので、' VALUES(?、?、?、 params [{}、{}、 "test"、 "[email protected]"、 "test"、 "test"、null、 "2017-01-09の場合は?、?、?、?、 "08:37:49"、 "127.0.0.1"]: ' – phpmeter
@jlacsonph私はあなたがそれらの値を取得しようとする前に、解決する必要がいくつかのセットアップ問題があると思います。私はあなたのプロジェクトを持っていないので、なぜそれがうまくいかないのかは分かりません。 –