2016-07-26 84 views
0

有一種表單可以創建Chain實體。Symfony2:表單未創建

class ChainType extends AbstractType 
{ 
    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name', TextType::class, array('label' => 'Company name')) 
      ->add('logoImageURL', TextType::class, array('label' => 'Company logo')); 
    } 

    /** 
    * @param OptionsResolver $resolver 
    */ 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'CoreBundle\Entity\Chain' 
     )); 
    } 
} 

這裏是一個newAction創建表單和保存實體

/** 
* Creates a new Chain entity. 
* 
* @Route("/new", name="chain_new") 
*/ 
public function newAction(Request $request) 
{ 
    $chain = new Chain(); 
    $form = $this->createForm(ChainType::class, $chain); 

    $form->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($chain); 
     $em->flush(); 

     return $this->redirectToRoute('chain_show'); 
    } 

    return $this->render(
     'AdminBundle:ChainPanel:new.html.twig', 
     array('form' => $form->createView()) 
    ); 
} 

下面是一個按鈕來創建表單

<button type="button" class="btn btn-primary"> 
    <a href="{{ path('chain_new') }}"> 
     Add Chain 
    </a> 
</button> 

問題

當我點擊「添加鏈'按鈕表單沒有創建,我只是重定向t o'chain_show'路線。我的代碼有什麼問題?

更新 - 我的解決方案

在控制器我把newAction的showAction之前。這個固定的問題。然而我找不到解釋

回答

1

我不確定你想做什麼,但是如果你想用ChainType表單創建一個頁面,你還應該爲該頁面創建一個模板,像這樣:

..... 

{% block YOUR_BLOCK %} 
    {{ form(form) }} 
{% endblock %} 

...... 

和,也不必包a標籤與標籤button,只是給class="btn btn-primary"a標籤。

0

你的問題是你正在使用保存新鏈對象的變量。請參閱我下面的例子,這應該解決您的問題...

public function newAction(Request $request) 
{ 
    $chain = new Chain(); 
    $form = $this->createForm(ChainType::class, $chain); 

    $form->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()) { 
     $chain = $form->getData(); 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($chain); 
     $em->flush(); 

     return $this->redirectToRoute('chain_show'); 
    } 

    return $this->render(
     'AdminBundle:ChainPanel:new.html.twig', 
     array('form' => $form->createView()) 
    ); 
} 

你也創造了不正確的提交按鈕。爲了測試它的所有工作正常,只需使用(在您的.twig.html文件中):

{{ form(form) }} 
0

雖然有趣,但我猜HTML的鏈接是錯誤的。您不應該將button包裝到錨標籤。有些瀏覽器不支持它。而是如下用途:

<a href="{{ path('chain_new') }}" class="btn btn-primary"> 
    Add Chain 
</a> 

如果這不能解決您的問題,你看到正在創建一個新的實體,當你點擊鏈接?

0

在控制器中,我在showAction之前放置了newAction。這個固定的問題。但是我找不到解釋