2017-10-24 6 views
0

나는 MainCategory의 하위 분류되고있는 CategoryAd 엔티티에 추가 할 AdsList 법인사용자 정의 심포니 양식 사용자 상호 작용을 기반으로

(난 그 말이 바랍니다)

나는 이것을 사용이 다음 필드가 그것으로 채워해야 MainCategories 중 하나는 하위 범주

에게의 선택 그래서 때 Dynamic Generation for Submitted Forms 기준으로 할 (10) 그러나이 너무 많은 코드가 내가 요지

AdsList

class AdsList 
{ 
/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string") 
*/ 
protected $title; 

/** 
* @ORM\Column(type="text") 
*/ 
protected $content; 

/** 
* @ORM\ManyToOne(targetEntity="CategoryAd", inversedBy="ad") 
*/ 
protected $category; 

/** 
* @ORM\column(type="date", name="posted_at") 
*/ 
protected $postedAt; 

/** 
* @ORM\ManyToOne(targetEntity="Agency", inversedBy="ads") 
* @ORM\JoinColumn(name="agency_id", referencedColumnName="id") 
*/ 
protected $postedBy; 
} 

를 만들 것입니다

CategoryAd 경우 난 여전히 내 경우

동안 그 예를 조정하는 방법을 모른다

class CategoryAd 
{ 
/** 
* @var int 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* @Assert\NotBlank() 
* @ORM\Column(name="name", type="string", length=255, unique=true) 
*/ 
private $name; 

/** 
* @ORM\OneToMany(targetEntity="AdsList", mappedBy="category") 
*/ 
private $ad; 

/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\MainCategory", inversedBy="subCat") 
*/ 
private $parentCat; 

/** 
* CategoryAd constructor. 
*/ 

public function __construct() 
{ 
    $this->ad = new ArrayCollection(); 
} 

메인 카테고리

class MainCategory 
{ 
/** 
* @var int 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 
/** 
* @var string 
* @Assert\NotBlank() 
* @ORM\Column(name="name", type="string", length=255, unique=true) 
*/ 
protected $name; 

/** 
* @var 
* @ORM\OneToMany(targetEntity="AppBundle\Entity\CategoryAd", mappedBy="parentCat") 
* @ORM\JoinColumn(name="cat_id", referencedColumnName="id") 
*/ 
protected $subCat; 

/** 
* MainCategory constructor. 
* @param string $name 
*/ 
public function __construct($name) 
{ 
    $this->name = $name; 
} 

이는 일이 나는 순간에 90 개 종류가 있기 때문에 상위 범주를하고 싶어, 그것은 작동하는 순간에 형태

이며, 그것은 단지 거 더

를 얻을 수 있어요 나는 아약스를 모르지만 심포니는 문서에 예제를 보여줍니다.

당신을 도울 수 있습니까?

/** 
    * @Route("/post", name="post") 
    */ 
    public function newAction(Request $request) 
    { 
    // create a Post and give it some dummy data for this example 
    $task = new AdsList(); 
    $task->setpostedAt(new \DateTime('now')); 

    $form = $this->createFormBuilder($task) 
     ->add('title', TextType::class) 
     ->add('content',TextareaType::class) 
     ->add('category', EntityType::class, array(
     // query choices from Category.Name 
      'class' => 'AppBundle:CategoryAd', 
      'choice_label' => 'name', 
     )) 
     ->add('postedAt', DateType::class, array(
      'widget' => 'single_text', 
      // this is actually the default format for single_text 
      'format' => 'yyyy-MM-dd', 
     )) 
     ->add('save', SubmitType::class, array('label' => 'Create Post')) 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     // $form->getData() holds the submitted values iN MeM 
     $task = $form->getData(); 

     // save the task to the database 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($task); 
     $em->flush(); 
     return $this->redirectToRoute('list'); 
    } 

    return $this->render('postlist/post.html.twig', array(
     'adForm' => $form->createView(), 
    )); 
} 

답변

0

당신은 당신의 사용 사례에 대한 제출 양식 대한 링크 동적 생성을 사용할 수 없습니다. 심포니의 문서는 값이 아닌 FormType을 동적으로 생성하는 것에 대해서만 이야기합니다.

데이터를 채우려면 자바 스크립트를 사용해야합니다. 귀하의 FormType과 귀하의 다음 필드는입니다. 그러나 주 카테고리를 선택하고 필드를 올바르게 채울 때마다 하위 카테고리를 검색하는 ajax 호출을 작성할 수 있습니다. CollectionType을 사용하려면 프로토 타입을 사용해야합니다.

+0

나는 게시물을 업데이트했습니다. –