乘以类别并将其绑定到数据库Symfony2



我需要在创建的表单上的帮助,我在树枝文件中创建了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在其中我不知道您的项目名称和捆绑名称 - 我认为这不是我认为的艰难。和一些代码:)

最新更新