2012-10-30 3 views
0

내가 만드는 내 양식에 도움이 필요합니다. 나뭇 가지 파일에 5 개의 양식을 만들고 컨트롤러를 만들었습니다. 지금 바인딩 할 때 폼의 값을 데이터베이스에 바인딩 할 수 있습니까? 그것은 나를 하나 개의 값이 5 회를 형성 표시하지만 내가 도와주세요, :(다른 값으로 5 시간을 필요로 나는 ...이 일을 이미 하루 종일 붙어범주를 곱하여 데이터베이스 Symfony2에 바인딩

내 나뭇 가지 파일 :

<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')); 
} 

답변

0

템플릿 :

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, 그 이름 카테고리 - 새와 컨트롤러 걸릴 배열

/** 
* @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')); 
} 

어떤 단어

경로 ("//테스트 추가", 요구 사항 = { "이름을"= "\ S +"}, 이름 = "test.create")이 작업의 이름이 될 것입니다에 대한

요구 사항이 필요하지를 project_bundlename_controller_action for you {project} _ {bundlename} _test_create whereis 프로젝트 이름과 번들 이름을 알지 못합니다. 그리고 일부 코드 :)

+0

대단히 감사합니다 Konstantin, 그 일 : –

+0

spasibo bolishoe :) –

1

제가 올바르게 이해하고 있는지 확실하지 않습니다. 다른 값을 가진 'category-new'라는 이름의 입력을 원합니다. 그렇다면, 당신은 폼보기에서 문제가 :

Category *<input type="text" name="category-new" ><br> 

이름 끝에 이름에 브래킷을 가져야한다 = "카테고리 - 새 []"나 이름 = "카테고리에 새로운 [1]"카테고리 1, 이름 = 카테고리 2에 대한 category-new [2] 등이 있습니다.

+0

감사합니다, 지금 시도하지만 컨트롤러를 변경해야합니까? –

+0

작동하지 않습니다 –

+0

u 님의 답변을주십시오. –

관련 문제