簡體   English   中英

Symfony2:未創建表單

[英]Symfony2: form is not created

有一種創建鏈實體的形式。

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>

問題

當我單擊“添加鏈”按鈕時,未創建表格,我只是重定向到“ chain_show”路線。 我的代碼有什么問題?

更新-我的解決方案

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

我不確定您要做什么,但是如果您嘗試使用ChainType表單創建頁面,則還應該為該頁面創建模板,如下所示:

.....

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

......

並且,還,你不必換a與標簽button標簽,只需要給class="btn btn-primary"a標簽。

您的問題是您正在使用包含新Chain對象的變量。 請在下面查看我的示例,這應該可以解決您的問題...

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

不過,有趣的是,我認為HTML對於鏈接是錯誤的。 您不應該將button包裝到錨標簽上。 某些瀏覽器不支持。 而是使用如下:

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

如果這不能解決您的問題,則單擊鏈接時是否看到正在創建的新實體?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM