2015-10-16 4 views
4

Я noob в php и symfony2.«Запрос не существует», создавая форму 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 %} 

Спасибо за вашу помощь.

ответ

7

Вы файл отсутствует это простое использование заявление:

use Symfony\Component\HttpFoundation\Request;

Однако: нет никакого смысла в прохождении запроса через функцию, когда вы используете $request = $this->getRequest() в той же самой функции. Это избыточно. Так что на самом деле вы можете просто сделать это:

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

Я получил это заявление, вы правы, это излишнее, но это не обязательно, если я удалить строку запроса и если bucle, я получил те же провал. – Juanjo

+1

Класс 'Acme \ AxialBundle \ Controller \ Request' не найден, потому что в этом пространстве имен нет класса с именем Request. Класс 'Symfony \ Component \ HttpFoundation \ Request' существует, но поскольку вы не используете этот класс в своем файле, он не может его найти. Если вы удалили инъекцию в метод, вы получили бы другую ошибку php. tldr: да, это ошибка: p – skrilled

+2

Skrilled прав, просто добавьте инструкцию «use», и ваша ошибка исчезнет. –

Смежные вопросы