Отправка формы Symfony не работает

Я следовал этому руководству, чтобы создать регистрационную форму с Symfony 2.5. .

Единственное отличие, которое я сделал, это дополнительное поле для имени пользователя в моем классе User и отображение его в форме UserType.

При отправке формы на account_create-маршрут (который в конечном итоге использует действие create в контроллере учетной записи) он не будет правильно обрабатывать форму. Страница отображается пустой, даже профилировщик больше не появляется.

Кроме того, кажется, что скрипт ломает мой Apache (я запускаю его локально в Windows через XAMPP), так как все, что я пытаюсь сделать после отправки формы, приводит к бесконечной загрузке. Это означает, что независимо от того, к какой странице на моем сервере я пытаюсь получить доступ (даже если это просто профилировщик), я не могу. Он просто продолжает загружаться вечно (однажды я ждал более 10 минут). Тогда помог только перезапуск Apache.

Это мой createAction внутри контроллера учетной записи

// 'account_create' route
// TestBundle:Account:create
public function createAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();
    echo "Doctrine managed. ";

    $form = $this->createForm(new RegistrationType(), new Registration());
    echo "Form created. ";

    $form->handleRequest($request);
    echo "Request handled. ";

    if ($form->isValid()) {
        $registration = $form->getData();
        echo "Form data received. ";

        $em->persist($registration->getUser());
        echo "User persisted. ";
        $em->flush();
        echo "Toilet flushed. ";

        return $this->redirect($this->generateUrl('admin_page'));
    }

    return $this->render(
        'TestBundle:Account:register.html.twig',
        array('form' => $form->createView())
    );
}

Он выводит только Doctrine managed. Form created., поэтому, по-видимому, происходит сбой при вызове метода handleRequest($request).

Что это такое ужасно неправильно?

Сообщите мне, если вам нужен код каких-либо других скриптов!


person Padarom    schedule 27.06.2014    source источник
comment
Вы добавили getUsername() и setUsername() в класс сущности?   -  person timmz    schedule 27.06.2014
comment
@Timmz: я сделал. Класс User имеет геттеры и сеттеры для каждого значения, к которому обращаются в форме.   -  person Padarom    schedule 27.06.2014
comment
попробуйте: \Doctrine\Common\Util\Debug::dump($request); чтобы увидеть, что находится в этом объекте ..   -  person timmz    schedule 27.06.2014
comment
Вы в конце концов нашли решение? У меня аналогичная проблема: скрипт останавливается на handleRequest($request) - без каких-либо ошибок или исключений. Журналы приложений пусты, логи php пусты, логи nginx пусты. Локально (xampp на windows, php 5.5.10) работает как шарм. Но вылетает на сервере (ubuntu, nginx, php-fpm 5.5.13).   -  person Marek    schedule 13.08.2014


Ответы (1)


я знаю, что это не ответ, но в любом случае он не подходит в качестве комментария и является важным шагом для отладки этого

поместите запрос дескриптора в блок try и повторите исключение

    try {
        $form->handleRequest($request);
    } catch (\Exception $e) {
        echo "failed : ".$e->getMessage();
    }

какое исключение выбрасывается?

person john Smith    schedule 27.06.2014
comment
По какой-то причине он не генерирует исключение, если я использую блок try-catch. Но разве Symfony не должна сама перехватывать исключения и отслеживать их для меня в dev-окружении? - person Padarom; 27.06.2014
comment
Я также пытался связать собственный обработчик ошибок через set_error_handler() на случай, если это ошибка, а не исключение. Скрипт по-прежнему просто перестает выполняться, а не ловит что-либо. - person Padarom; 27.06.2014
comment
да, это странно, вы используете классы RegistrationType и Registration в своем документе? попробуйте установить их как переменные до того, как $type = new RegistrationType() .. может быть, это точка отказа - person john Smith; 27.06.2014
comment
Я делаю. И Test\TestBundle\Form\Type\RegistrationType, и Test\TestBundle\Form\Model\Registration являются used. - person Padarom; 27.06.2014