我有实体类型类字段(下拉列表),它从我的一个表生成数据。我有表单子代理,用户将为该特定子代理选择公司。
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;
..../
答案 0 :(得分:0)
$data->getCompanyId()
返回公司对象。如果您只想获取其ID而不是整个对象,请调用$data->getCompanyId()->getId()
答案 1 :(得分:0)
您可以直接从以下表单中获取公司的id
控制器:
$id = $sub_agent->getId();
...假设您的Sub_agent
实体类
public function getId(){
return $this->id;
}
但你在这里错过了重点。当你使用Doctrine时,忘记&#34; SQL的方式&#34;,而是将整个问题视为对象。
只需删除if ('POST' === $request->getMethod())
,然后添加:
if ($form->isSubmitted() && $form->isValid()) {
...
}
检查表单是否已提交,以及是否有效,根据您的约束,在Sub_agent
实体中设置,如果有的话。
在那张支票中,我已经告诉你要添加,只需转储$sub_agent
变量以查看其中的内容。不要忘记第一件事:在模板中你有相应的表格,添加你想要的一些数据,然后提交那个表格,然后从控制器检查转储。
//...
if ($form->isSubmitted() && $form->isValid()) {
dump($sub_agent); die;
}
所以重点是你不必担心,或者尝试从表单中获取每个字段,然后将它们映射到实体的属性,以便能够保存数据库中的表单数据。学说已经为你做了。您需要做的就是设置实体(属性+ getter和setter),基于该实体创建表单,然后添加我告诉您的代码。那就是它!够容易吗?