我有實體類型類字段(下拉),從我的表中生成數據。我有表單子代理,用戶將爲該特定子代理選擇一家公司。從實體形式傳遞數據到控制器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;
..../
爲什麼主義在您將其傳遞給控制器時不立即捕獲選項的價值?因爲當我嘗試在數據庫中插入數據時,'company_id'獲得值'{}'而不是像[20,21,22] \ 這樣的選項的值,請參閱VALUES(?,?,?使用參數[{},{},「test」,「[email protected]」,「test」,「test」,null,「2017-01-09」?「,?,?,?,? 08:37:49「,」127.0.0.1「]:' – phpmeter
@jlacsonph我想你有一些設置問題需要解決,然後再試圖獲取這些值。因爲我沒有你的項目,我真的不能告訴你爲什麼它不起作用。 –