在 Symfony 3 中使用 PostType Form 使用多个下拉列表填充数据库中的一列
Using multiple dropdown lists to fill one column on db using PostType Form in Symfony 3
我遇到以下情况:
我有两个下拉列表,这两个值都需要存储在同一个数据库列中。我的问题是如何在我的 buildForm 方法和 html.twig 上解决这个问题?
我要感谢大家的帮助。
这是我的代码:
实体
* @var string
*
* @ORM\Column(name="Diningroom", type="text")
*/
private $diningroom;
/**
* @var string
*
* @ORM\Column(name="Kitchen", type="text")
*/
private $kitchen;
/**
* @var string
*
* @ORM\Column(name="Office", type="text")
*/
private $office;
/**
* @var string
*
* @ORM\Column(name="BedRoom", type="text")
*/
private $bedroom;
buildForm
->add('firstName')
->add('lastName')
->add('email')
->add('telephone')
->add('county')
->add('city')
->add('street')
->add('postcode')
->add('floor', 'entity')
->add('elevator', 'entity')
->add('diningroom')
->add('kitchen')
->add('office')
->add('bedroom')
->add('bathrooms')
->add('boxes')
->add('message')
->add('packing')
->add('personrequired')
->add('submit', SubmitType::class, array(
'label' => 'Get Quotation'
// 'class' => 'btn btn-danger pull right'
))
控制器
public function createAction(Request $request)
{
//create a new post
$removalPost = new Post();
$form = $this->createForm(PostType::class, $removalPost, [
'action' => $request->getUri()
]);
$form->handleRequest($request);
if($form->isValid()){
$em = $this->getDoctrine()->getManager();
$removalPost->setAuthor($this->getUser());
$removalPost->setDate(new \DateTime());
$em->persist($removalPost);
$em->flush();
return $this->redirect($this->generateUrl('RemovalsUK_view',
['id' => $removalPost->getId()]));
}
return $this->render('RemovalsUKBundle:Post:create.html.twig', array
('form' => $form->createView()
));
}
我的HTML
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<div class="form-group">
<label>Table</label>
<select class="form-control required" name="kitchen_table" id="kitchen_table">
<option value="" selected>Quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-6">
<div class="form-group">
<label>Seat</label>
<select class="form-control required" name="kitchen_seat" id="kitchen_seat">
<option value="" selected>Quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
</div>
</div>
例如,我想要做的是将 Table 和 Seat[=34 中的值(数量)插入厨房列=]
如果有人能解决这个问题,我将不胜感激。谢谢
我会说为 kitchen_table 和 kitchen_seat 创建 getter 来填写表格。
对于保存,问题是您要保存哪种格式?
$data = $form->getData();
$removalPost->setKitchen($data['kitchen_table'].'_'.$data['kitchen_seat']);
这应该设置。
但是您在设置表单时也遇到了问题。表单应该适合您的字段,否则您无法通过表单获取数据,而必须通过请求获取数据...
我遇到以下情况: 我有两个下拉列表,这两个值都需要存储在同一个数据库列中。我的问题是如何在我的 buildForm 方法和 html.twig 上解决这个问题? 我要感谢大家的帮助。 这是我的代码:
实体
* @var string
*
* @ORM\Column(name="Diningroom", type="text")
*/
private $diningroom;
/**
* @var string
*
* @ORM\Column(name="Kitchen", type="text")
*/
private $kitchen;
/**
* @var string
*
* @ORM\Column(name="Office", type="text")
*/
private $office;
/**
* @var string
*
* @ORM\Column(name="BedRoom", type="text")
*/
private $bedroom;
buildForm
->add('firstName')
->add('lastName')
->add('email')
->add('telephone')
->add('county')
->add('city')
->add('street')
->add('postcode')
->add('floor', 'entity')
->add('elevator', 'entity')
->add('diningroom')
->add('kitchen')
->add('office')
->add('bedroom')
->add('bathrooms')
->add('boxes')
->add('message')
->add('packing')
->add('personrequired')
->add('submit', SubmitType::class, array(
'label' => 'Get Quotation'
// 'class' => 'btn btn-danger pull right'
))
控制器
public function createAction(Request $request)
{
//create a new post
$removalPost = new Post();
$form = $this->createForm(PostType::class, $removalPost, [
'action' => $request->getUri()
]);
$form->handleRequest($request);
if($form->isValid()){
$em = $this->getDoctrine()->getManager();
$removalPost->setAuthor($this->getUser());
$removalPost->setDate(new \DateTime());
$em->persist($removalPost);
$em->flush();
return $this->redirect($this->generateUrl('RemovalsUK_view',
['id' => $removalPost->getId()]));
}
return $this->render('RemovalsUKBundle:Post:create.html.twig', array
('form' => $form->createView()
));
}
我的HTML
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<div class="form-group">
<label>Table</label>
<select class="form-control required" name="kitchen_table" id="kitchen_table">
<option value="" selected>Quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-6">
<div class="form-group">
<label>Seat</label>
<select class="form-control required" name="kitchen_seat" id="kitchen_seat">
<option value="" selected>Quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
</div>
</div>
例如,我想要做的是将 Table 和 Seat[=34 中的值(数量)插入厨房列=] 如果有人能解决这个问题,我将不胜感激。谢谢
我会说为 kitchen_table 和 kitchen_seat 创建 getter 来填写表格。 对于保存,问题是您要保存哪种格式?
$data = $form->getData();
$removalPost->setKitchen($data['kitchen_table'].'_'.$data['kitchen_seat']);
这应该设置。 但是您在设置表单时也遇到了问题。表单应该适合您的字段,否则您无法通过表单获取数据,而必须通过请求获取数据...