Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 17.03.2015 12:01:38

Не работает POST - обработка в маршрутизаторе

Здравствуйте.
Только начал изучать Laravel (это мой первый фреймворк в принципе) и почти сразу столкнулся с трудностью.
Создаю простую форму с одним текстовым полем и кнопкой отправки (Без помощи Laravel) в файле представления test.php, который вызывается из контроллера "MyFirstController".

В файле routes.php пишу (в форме: action="act_form"):

Route::post('test/act_form', function()
{
  return "Форма обработана!";
});

Но мне выводиться ошибка.
Я пробовал вместо "Route::post('test/act_form', ..." писать "Route::post('act_form', ...", всё-равно не помогает.
Подскажите, как правильно отлавливать форму из routes.php.

Весь файл routes.php, на всякий случай:

<?php
Route::get('/', function()
{
    return "Hello!";
});

Route::get('test', 'MyFirstController@test');

Route::post('test/act_form', function()
{
  return "Форма обработана!";
});

Изменено Rusl (17.03.2015 12:02:44)

Не в сети

#2 17.03.2015 12:12:47

Re: Не работает POST - обработка в маршрутизаторе

Перепроверьте, на какой адрес идёт отправка формы (просто в адресной строке посмотрите) и точно ли форма отправляется методом POST. И покажите форму саму.

Не в сети

#3 17.03.2015 12:24:19

Re: Не работает POST - обработка в маршрутизаторе

Форма у меня сделана стандартно:

                <form action='act_form' method='POST'>
			<input type='text' id='txt' />
			<input type='submit' value='Отправить' />
		</form>

Сначала пишу в адресной строке: http://localhost:8000/test Мне показывается форма. Ввожу данные, отправляю, в адресной сроке пишется: http://localhost:8000/test/act_form

Я пробовал в маршруте писать и Route::post и Route::get и даже any. Всё-равно не помогает, выводит сообщение "Whoops, looks like something went wrong."

Не в сети

#4 17.03.2015 13:04:12

Re: Не работает POST - обработка в маршрутизаторе

Смотрите описание ошибки после:

Rusl пишет:

"Whoops, looks like something went wrong."

Предположительно: не отправлен токен
Добавьте поле:
<input type="hidden" value="{!! csrf_token() !!}" name="_token">
либо:
<input type="hidden" value="<?=csrf_token()?>" name="_token">
если не используете blade

Изменено Goshik (17.03.2015 13:06:45)

Не в сети

#5 17.03.2015 13:04:19

Re: Не работает POST - обработка в маршрутизаторе

в форму надо добавить токен

xml<input type="hidden" name="_token" value="{{ csrf_token() }}">

Не в сети

#6 17.03.2015 13:05:21

Re: Не работает POST - обработка в маршрутизаторе

Goshik, токен можно экранировать, не надо использовать {!! ... !!} без особой необходимости

Не в сети

#7 17.03.2015 13:07:15

Re: Не работает POST - обработка в маршрутизаторе

constb пишет:

Goshik, токен можно экранировать, не надо использовать {!! ... !!} без особой необходимости

Согласен

Изменено Goshik (17.03.2015 13:09:07)

Не в сети

#8 17.03.2015 13:51:50

Re: Не работает POST - обработка в маршрутизаторе

А его (токен) надо где-то применять при обработке? а то у меня всё-так же пока, с ошибкой.

Не в сети

#9 17.03.2015 13:54:33

Re: Не работает POST - обработка в маршрутизаторе

нигде, его CSRF-миддлварь стандартная проверяет на пост-запросах.

Не в сети

#10 17.03.2015 13:56:19

Re: Не работает POST - обработка в маршрутизаторе

А почему ошибка всё-ещё появляется? неужели что-то не так делаю??

Не в сети

#11 17.03.2015 13:57:22

Re: Не работает POST - обработка в маршрутизаторе

ну как минимум не включен отладочный режим наверное. иначе кроме «Whoops, looks like something went wrong.» оно бы ещё подробно писало что за ошибка и откуда где она возникла.

Не в сети

#12 17.03.2015 13:59:09

Re: Не работает POST - обработка в маршрутизаторе

нет, теперь пишет: "Sorry, the page you are looking for could not be found." А как проверить вкл. ли отладочный режим?

Не в сети

#13 17.03.2015 14:06:10

Re: Не работает POST - обработка в маршрутизаторе

Всё, разобрался!!) В роуте эксперементируя убрал "test/" из адреса. Добавил, получилось:

Route::post('test/act_form', function()
{
	return "Форма обработана!";
});

Всем спасибо!!!!

Не в сети

Подвал раздела