我需要在创建的表单上的帮助,我在树枝文件中创建了5个表单并创建了一个控制器,当我立即绑定时,我如何将我的值从表单到数据库绑定到数据库它只显示了5次的一个值,但我需要5次才能不同:(请帮助,我已经整天都坚持了。
我的树枝文件:
<div class="new-test">
<h2>New test </h2>
<form action="{{ path('test.create') }}" method="post">
Test name: <input type="text" name="name"/><br>
Category 1<input type="text" name="category-new" >
<div id="customWidget">
<div id="colorSelector1"><div style="background-color: #00ff00"></div>
</div>
<div id="colorpickerHolder1"></div>
</div>
Category 2<input type="text" name="category-new" ><br>
Category 3<input type="text" name="category-new" ><br>
Category 4<input type="text" name="category-new" ><br>
Category 5<input type="text" name="category-new" ><br>
<input type="submit" value="Add">
</form>
我的控制器:
/**
* @Route("/add/test", requirements={"name" = "s+"}, name="test.create")
* @Method("Post")
* @return array
*/
public function createAction()
{
$success = 0;
$name = $this->getRequest()->get('name');
if( !empty($name) )
{
$test = new Test();
$test->setName($this->getRequest()->get('name'));
$em = $this->getDoctrine()->getManager();
$em->persist($test);
$em->flush();
$success = 'Test '.$test->getName().' was created';
}
else
{
$success = 'Test name can not be empty';
}
$category = $this->getRequest()->get('category-new');
for ($i=0; $i<=5; $i++){
if( !empty($category) )
{
$categoryName = new Category();
$categoryName->setName($this->getRequest()->get('category-new'));
$em = $this->getDoctrine()->getManager();
$em->persist($categoryName);
$em->flush();
$success = ' Category '.$categoryName->getName().$i.' was created';
}
else
{
$success = 'Test name can not be empty';
}
}
return $this->redirect($this->generateUrl('test.new'));
}
不确定我是否正确理解。您希望拥有具有不同值的名称"类别新"的输入。如果是这样,您的表单视图有问题:
Category *<input type="text" name="category-new" ><br>
名称应在end name ="类别new []"或name ="类别new [1]"中的traget name ="类别1",name ="类别 - new [2]"的类别2,因此on。
模板:
Category 1<input type="text" name="category-new[]" > <div id="customWidget"> <div id="colorSelector1"><div style="background-color: #00ff00"></div> </div> <div id="colorpickerHolder1"></div> </div> Category 2<input type="text" name="category-new[]" ><br> Category 3<input type="text" name="category-new[]" ><br> Category 4<input type="text" name="category-new[]" ><br> Category 5<input type="text" name="category-new[]" ><br>
是Meen,您的控制器将数组带有名称类别new
/** * @Route("/add/test") * * @return array */ public function createAction() { $success = 0; $name = $this->getRequest()->get('name'); if (!empty($name)) { $test = new Test(); $test->setName($name); $em = $this->getDoctrine()->getManager(); $em->persist($test); $em->flush(); $success = 'Test ' . $test->getName() . ' was created'; } else { $success = 'Test name can not be empty'; } $categoryList = array_map('trim', $this->getRequest()->get('category-new')); foreach ($categoryList as $category) { if (!empty($category)) { $categoryName = new Category(); $categoryName->setName($category); $em = $this->getDoctrine()->getManager(); $em->persist($categoryName); $em->flush(); $success = ' Category ' . $category . ' was created'; } else { $success = 'Test category-new may not be empty'; } } return $this->redirect($this->generateUrl('test_create')); }
一些单词
路由("/add/test",需求= {" name" =" s "},name =" test.create")
要求不需要您此操作的名称将为您的project_bundlename_controller_action {project} _ {bundlename} _test_create在其中我不知道您的项目名称和捆绑名称 - 我认为这不是我认为的艰难。和一些代码:)