Php 小枝模板上的Symfony表单验证和错误

Php 小枝模板上的Symfony表单验证和错误,php,forms,symfony,twig,Php,Forms,Symfony,Twig,一段时间以来,我一直在为这个问题寻找解决方案。我在Stackoverflow上发现了很多问题,并尝试了几乎所有的问题,但这对我的问题没有帮助 我在控制器和细枝视图中有一个表单,它将呈现该表单。我还有一个用于验证的实体 /** * @Route("/buy", name="buy") */ public function buyAction(Request $request) { $priceArray = $this->container->getParameter('p

一段时间以来,我一直在为这个问题寻找解决方案。我在Stackoverflow上发现了很多问题,并尝试了几乎所有的问题,但这对我的问题没有帮助

我在控制器和细枝视图中有一个表单,它将呈现该表单。我还有一个用于验证的实体

/**
 * @Route("/buy", name="buy")
 */
public function buyAction(Request $request)
{
    $priceArray = $this->container->getParameter('price');
    $options = [];
    foreach ($priceArray as $billingCycle => $array) {

        $options[$array['description'].' $'.$array['price']] = $billingCycle;
    }

    $orderData = new OrderData();
    // $orderData->setNickName('Enter Server NickName');

    $form = $this->createFormBuilder($orderData)
        ->add(
            'billingCycle',
            ChoiceType::class,
            array(
                'choices'           => $options,
                'choices_as_values' => true,
                'expanded'          => true,
                'label'             => 'Select Billing Cycle',
            )
        )
        ->add('nickName', TextType::class, ['label' => 'Nick name for your server'])
        ->add('ipAddress', TextType::class, ['label' => 'IP Address of your server'])
        ->add(
            'save',
            SubmitType::class,
            array(
                'label' => 'Proceed to Payment',
                'attr'  => [
                    'formnovalidate' => 'formnovalidate',
                ],
            )
        )
        ->getForm();

    $options = [
        'priceArray' => $priceArray,
        'form'       => $form->createView(),
    ];

    $form->handleRequest($request);
    if ($form->isSubmitted()) {

        if ($form->isValid()) {
            die('form is valid');
        } else {
            $errors = $form->getErrors(true, false);
            dump($errors);
            exit;
        }
    }


    return $this->render('default/buy.html.twig', $options);
}
AppBundle/Entity/OrderData.php

    <?php
namespace AppBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;

class OrderData
{
    /**
     * @Assert\NotBlank(message="missing_billingcycle");
     */
    protected $billingCycle;

    /**
     * @Assert\NotBlank(message="missing_nickname")
     */
    protected $nickName;

    /**
     * @Assert\NotBlank(message="missing_ipaddress");
     * @Assert\Ip(message="invalid_ipaddress");     
     */
    protected $ipAddress;

    /**
     * @return mixed
     */
    public function getBillingCycle()
    {
        return $this->billingCycle;
    }

    /**
     * @param mixed $billingCycle
     */
    public function setBillingCycle($billingCycle)
    {
        $this->billingCycle = $billingCycle;
    }

    /**
     * @return mixed
     */
    public function getIpAddress()
    {
        return $this->ipAddress;
    }

    /**
     * @param mixed $ipAddress
     */
    public function setIpAddress($ipAddress)
    {
        $this->ipAddress = $ipAddress;
    }

    /**
     * @return mixed
     */
    public function getNickName()
    {
        return $this->nickName;
    }

    /**
     * @param mixed $nickName
     */
    public function setNickName($nickName)
    {
        $this->nickName = $nickName;
    }
}

这显示了已翻译的验证错误。然而,我不太确定我在这里遗漏了什么,因此它没有显示在视图上

经过大量挖掘,我找到了我错的地方

$options = [
        'priceArray' => $priceArray,
        'form'       => $form->createView(),
    ];

$form->handleRequest($request);
“表单”赋值必须在HandlerRequest之后

$form->handleRequest($request);
$options = [
        'priceArray' => $priceArray,
        'form'       => $form->createView(),
    ];

经过大量的挖掘,我发现我错在哪里了

$options = [
        'priceArray' => $priceArray,
        'form'       => $form->createView(),
    ];

$form->handleRequest($request);
“表单”赋值必须在HandlerRequest之后

$form->handleRequest($request);
$options = [
        'priceArray' => $priceArray,
        'form'       => $form->createView(),
    ];

非常感谢。我们有完全相同的问题谢谢你。我们遇到了完全相同的问题