【问题标题】:"Request does not exist" creating form symfony2“请求不存在”创建表单 symfony2
【发布时间】:2015-10-16 22:27:56
【问题描述】:

我是 php 和 symfony2 的菜鸟。

我正在尝试按照教程 http://symfony.com/doc/current/book/forms.html 和其他教程创建一个表单。

我收到“500 内部错误”,我不知道我什么时候失败了,我的大脑崩溃了。需要帮助,谢谢

日志:

[2015-10-16 23:35:27] request.INFO: Matched route "nueva_serie". {"route_parameters":{"_controller":"Acme\\AxialBundle\\Controller\\SeriesController::nuevaAction","_route":"nueva_serie"},"request_uri":"http://pruebas.com/nueva-serie/"} []
[2015-10-16 23:35:27] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
[2015-10-16 23:35:27] request.CRITICAL: Uncaught PHP Exception ReflectionException: "Class Acme\AxialBundle\Controller\Request does not exist" at /home/jjrojo/estigia/vendor/sensio/framework-extra-bundle/EventListener/ParamConverterListener.php line 83 {"exception":"[object] (ReflectionException(code: 0): Class Acme\\AxialBundle\\Controller\\Request does not exist at /home/jjrojo/estigia/vendor/sensio/framework-extra-bundle/EventListener/ParamConverterListener.php:83)"} []
[2015-10-16 23:35:27] request.INFO: Matched route "_wdt". {"route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"884636","_route":"_wdt"},"request_uri":"http://pruebas.com/_wdt/884636"} []    

routing.yml :

    nueva_serie:
    path:     /nueva-serie/
    defaults: { _controller: AcmeAxialBundle:Series:nueva}

这是我在 SeriesController 中的动作控制器:

    public function nuevaAction(Request $request)
    {
        $request = $this->getRequest();

        $serie = new Serie();
        $form = $this->createForm(new SerieType(), $serie);
        if($request->getMethod() == 'POST')
        {
            $form->bindRequest($request);
            if($form->isValid()){
                //get data and flush
                return $this->redirect($this->generateURL('lista'));
            }
        }

        return $this->render('AcmeAxialBundle:Series:nueva.html.twig', array(
        'form' => $form->createView(),
        ));
    }

类型,SerieType.php:

    <?php
    namespace Acme\AxialBundle\Form\Type;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
    class SerieType extends AbstractType
    {
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('titulo')
                ->add('imagen')
                ->add('descripcion');
    }
    public function getName()
    {
        return 'form_serie';
    }
    }

还有 nueva.html.twig

    {% block body %}
    <form action="{{ path('nueva_serie') }}" method="post">
        {{ form_widget(form) }}
    <input type="submit" />
    </form>
    {% endblock %}

感谢您的帮助。

【问题讨论】:

    标签: php forms symfony request


    【解决方案1】:

    您的文件缺少这个简单的使用声明:

    use Symfony\Component\HttpFoundation\Request;

    但是:当您在同一个函数中使用 $request = $this-&gt;getRequest() 时,将 Request 传递给该函数是没有意义的。这是多余的。所以你真的可以这样做:

    public function nuevaAction()
    {
        $request = $this->getRequest();
        ...
    

    【讨论】:

    • 我有这个说法,你是对的,它是多余的,但这不是失败,如果我删除请求行和 if bucle,我收到同样的失败。
    • Class Acme\AxialBundle\Controller\Request 未找到,因为该命名空间中没有名为 Request 的类。 Symfony\Component\HttpFoundation\Request 类确实存在,但由于您没有在文件中使用该类,因此无法找到它。如果您已经删除了对该方法的注入,那么您将得到一个不同的 php 错误。 tldr:是的,那是失败:p
    • Skrilled 是对的,只要加上“use”语句,你的错误就会消失
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多