dshm8998473 2015-12-23 17:53
浏览 69

表单未提交,表单提交后无法获取发布数据

I'm trying to run a simple form, but it doesn't work and there aren't error message

UserType.php

<?php

namespace BISSAP\ForumBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Routing\Router;
class UserType extends AbstractType
{
    /**
    * @var Router
    */
    private $router;

    public function __construct(Router $router)
    {
        $this->router = $router; 
    }


     /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
            $builder
                    ->add('name', 'text', array('required' => false))
                    ->setAction($this->router->generate('bissap_forum_test'))
                    ->setMethod('POST')
                    ->add('Envoyer', 'submit', array(
                        'attr' => array(
                        'class' => 'btn right-flt'
                        )));


    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'BISSAP\UserBundle\Entity\Usertmp'
        ));
    }

    public function configureOptions(OptionsResolver $resolver) 
    { 
        $resolver->setDefaults(array( 'data_class' => $this->class, 'intention' => 'Registration', 'validation_groups' => array('Registration'))); 
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'userType';
        // return 'bissap_forumbundle_user';
    }
}

TController.php

<?php

namespace BISSAP\ForumBundle\Controller;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use BISSAP\ForumBundle\Form\UserType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use BISSAP\UserBundle\Entity\Usertmp;
use Symfony\Component\HttpFoundation\Request;

class TController extends Controller
{

  public function indexAction(Request $request)
  {
    //$entity = new Usertmp();
    $form = $this->createForm('userType', $entity, array('validation_groups' => 'Registration'));

    $data_post = $request->request->get('name');

    if ($form->isValid())
    {
        return $this->redirectToRoute('bissap_forum_index');
    }

    return $this->render('BISSAPForumBundle:T:index.html.twig', array('form'=> $form->createView(), 'errors_tmp' => $this->getErrorMessages($form), 'data_post' => $data_post2));
  }

  private function getErrorMessages(\Symfony\Component\Form\Form $form) 
  {      
        $errors = array();
        foreach ($form->getErrors(true, false) as $error) {

        $errors[] = $error->current()->getMessage();
        }

        return $errors;
    }

}
?>

In this Controller, I try to get POST data and display it in template (index.html.twig) with :

$data_post = $request->request->get('name'); 

but $data_post is empty

UserTmp.php

<?php

namespace BISSAP\UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * BISSAP\UserBundle\Entity\User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="BISSAP\UserBundle\Entity\UserRepository")
 */
class Usertmp 
{

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(name="name", type="string", length=255)
 *
 * @Assert\NotBlank(message="Please enter your name.", groups={"Registration", "Profile"})
 * @Assert\Length(
 *     min=3,
 *     max=255,
 *     minMessage="The name is too short.",
 *     maxMessage="The name is too long.",
 *     groups={"Registration", "Profile"}
 * )
 */
private $name;



/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}

/**
 * Set name
 *
 * @param string $name
 * @return Usertmp
 */
public function setName($name)
{
    $this->name = $name;

    return $this;
}

/**
 * Get name
 *
 * @return string 
 */
public function getName()
{
    return $this->name;
}
}

service.yml

   bissap_forum.test_form:
        class: BISSAP\ForumBundle\Form\UserType
        arguments: ['@router']
        tags:
            - { name: form.type, alias: userType }

index.html.twig

{{form( form )}}
{% for error in errors_tmp %}
    <div>error : {{ error }}</div>
{% endfor %} 

<div>data_post : {{ data_post }}</div>

Form HTML generated with $form->createView() :

<form name="userType" method="post" action="/bodykoncept/web/app_dev.php/forum/test">
    <div id="userType"><div>
        <label for="userType_name">Name</label>
        <input id="userType_name" name="userType[name]" type="text">
    </div>
    <div>
        <button type="submit" id="userType_Envoyer" name="userType[Envoyer]" class="btn right-flt">Envoyer</button>
</div>
        <input id="userType__token" name="userType[_token]" value="ldFnSgioYkQEI6WOzqFJterUSrBoEagSct2m5p2oQmY" type="hidden">
    </div>
</form>

<div>data_post : </div>

<input id="userType_name" name="userType[name]" type="text"> :

Name Input = userType[name] maybe is this for reason that

$data_post = $request->request->get('name'); in TController.php is empty.

This form is not submited, $this->submitted is false in vendor/symfony/symfony/src/Symfony/Component/Form.php

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)
    • ¥15 keil里为什么main.c定义的函数在it.c调用不了
    • ¥50 切换TabTip键盘的输入法
    • ¥15 可否在不同线程中调用封装数据库操作的类
    • ¥15 微带串馈天线阵列每个阵元宽度计算
    • ¥15 keil的map文件中Image component sizes各项意思
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据