Laravel 5 GET работает, но метод POST не работает
Я новичок в Laravel, и у меня возникла странная проблема. В маршрутах я вызываю функцию через методы POST и GET.
GET возвращает данные, а POST — нет. Вот мой простой код:
Пожалуйста помоги. Спасибо.
4 ответа
Вам необходимо включать токен CSRF в каждый запрос (кроме GET).
Добавьте это в свою форму:
Ваша форма будет выглядеть так
Laravel автоматически создает «токен» CSRF для каждого активного сеанса пользователя, управляемого приложением. Этот токен используется для проверки того, что аутентифицированный пользователь действительно выполняет запросы к приложению.
Каждый раз, когда вы определяете HTML-форму в своем приложении, вы должны включать в форму скрытое поле токена CSRF, чтобы промежуточное ПО защиты CSRF могло проверить запрос. Чтобы сгенерировать скрытое поле токена CSRF, вы можете использовать вспомогательную функцию csrf_field:
// Синтаксис шаблона Blade:
Вспомогательная функция csrf_field генерирует следующий HTML-код:
Вам не нужно вручную проверять токен CSRF при запросах POST, PUT или DELETE. ПО промежуточного слоя VerifyCsrfToken, которое входит в группу промежуточного программного обеспечения веб-сайтов, автоматически проверяет, соответствует ли токен во входных данных запроса токену, хранящемуся в сеансе.
Если вы работаете в Интернете без ajax, вы можете проверить и использовать приведенные выше ответы или использовать
Если вам нужно вызвать этот URL-адрес через запрос ajax Шаг 1 : добавьте токен CSRF в свой метатег (), вы можете указать в файле main.blade.php (макет)
Шаг 2. Добавьте заголовок X-CSRF-TOKEN в свой запрос ajax
Источник
Laravel Laravel 5.5 Нет данных $_POST
littus
Новичок
Laravel-5.5
PHP 7.0.27
Linux carrot x86_64
Server: FPM/FastCGI (на локальном где все работает стоит- Apache 2.0 Handler )
Всем привет!
Столкнулся с такой проблемой. Разрабатывал проект на Laravel-5.5 на локальной машине(PHP/Server -7.0.26-2/Apache 2.0 Handler ). После чего залил весь проект,как есть на бесплатный хостинг, где у меня размещено несколько проектов наWordPress.
На хостинге в настройках выбрал версию PHP = 7.0.
Все в принципе работает нормально, за исключением того, что на фронтенд-части сервера не работает POST, — я его не получаю вообще.
На сайте есть форма- контактная форма и из нее из POST я должен получать данные для валидации и формирования письма, но POST я вообще не получаю.
При том что проект имеет бэкенд-часть, где у меня из Админ-панели редактируется некоторый контент и там есть аналогичные формы POST(для редактирования,добавления нового материала). Так вот эти формы в бэкэнде работают отлично (получаю POST данные из них, обрабатываю, валидирую). На локалке(с которой я копировал проект) конечно же все работает как нужно и все норм.
Во вью, где находится эта форма все стандартно — я использую просто стандартную форму с нужными полями:
Как уже говорил, на бекен-части есть много форм и все они работают, — т.е.все норм, что меня вообще сбивает с толку, поскольку все одинаково по-сути, ну кроме того, что для бекенд-части у меня префикс другой и Класс-посредник другой, — тут [‘auth’], а в том роуте,
что выше приведен — [‘web’]:
В чем может заключаться проблема??
Сначала я подумал,что возможно не правильно перенес проект, т.к. по сути я просто, как есть, включая папку [vendor], скопировал сожержимое с локалки на бесплатный хост и там на хосте я не делал composer update, например. Но если так, то остальные формы на backend`e работают, — значит все норм. Так в чем же дело??
Источник
Почему не работает вывод post?
Приветствую!
На Laravel 8 делаю следующее. В папке paublic создал файл form.html
В web.php прописал
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Парсер. Почему не работает POST?
Разбираюсь с простейшими парсерами. Подскажите, почему не отправляется запрос POST из библиотеки.
Метод POST в JSP не работает. почему?
У меня есть форма, которая отправляет методом POST на JSP страницу. Пытаюсь читать параметр.
Почему не работает AJAX при отправке POST?
Всем привет! Есть AJAX код, который отправляет post данные с формы в php файл. Но почему-то этот.
вывод в цикле, почему не работает
Доброго всем. Банально хочу вывести через dbms_output в цикле while n-ое кол-во строк. Вопрос.
проблема не нова, но вопрос. вы хоть когда ни будь читаете мануалы и доступную инфу в открытом доступе?
Почему не работает вывод в консоль
люди, скажите пожста почему не работает вывод (write). юзаю ms visual c# 2008express, framework.
Подскажите почему не работает вывод строк?
подскажите почему программа работает некорректно? на выводе должно быть ,true] vec != vec2 vec.
Как работает данный код и почему такой вывод?
Написал какой-то код, выводит в дебаге 5 в релизе 0 #include using namespace std;.
Не подскажите почему не работает вывод данных из формы на лист
Не подскажите почему не работает вывод данных из формы на лист
Структуры. Файловый ввод вывод. Почему не работает программа ?
Задача: В зараннее написанном текстовом документе имеются фамилии учеников и их оценки. Нужно.
Источник
Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
#1 10.07.2017 14:36:06
Валидация данных (POST) . В сессию не сохраняются данные формы и текст
Всем доброго дня!
Как я понимаю проблема в том, что в сессию не сохраняются данные формы и текст ошибок валидации. Если я все тоже самое делаю, но без валидации данных в Контроллере, то в сесиию все отлично сохраняется.
Есть простая вью с формой отправки данных (через шаблонизатор ‘blade’):
Есть простой Контроллер `ContactController.php`
По идее,когда валидация данных по установленным правилам успешна для кадого из перечисленных полей Формы, то код после инициализации процесса валидации (строка $this->validate($request, $rules, $messages);) будет выполнен и я получаю dump того, что в POST и того, что будет записано в сессию. Когда валидация успешна, данные в Форме не должны оставаться, а вот когда валидация провалена, то должно генерироваться исключение и должен происходить редирект на предыдущую страницу, а данные, сохраняться в сессии и, благодаря указанной конструкции в вьюхе
value=»<< old('name') >>» отображаться в полях. Но у меня этого не происходит.
Если я верно ввожу данные в форму, чтобы валидация была успешна, — я вижу распечатку POST, что значит, валидация таки успешно прошла (и правила то действуют, указанные в Контролллере), но вот когда я ввожу не верные для валидирования данные, чтоб провалить ее, то и сохраненных данных в полях я не вижу, что как я понимаю, должно быть автоматически в этом механизме валидации заложено.
Скажу также, что разрешение на запись flash()-данных, да и вообще запись в сессию, как я понимаю, я тоже прописал в `/app/Http/Kernel.php`
При этом, как я говорил, если я не буду в контроллере проводить валидацию данных, и установлю $request->flash(); чтобы данные из POST записывались в сессию одноразово, то они записываются и в Форме остаются, т.е. тут все работает корректно.
Но используя валидацию, я эту строку $request->flash(); удаляю, т.к. судя по документации механизм валидации сам это делает и это писать не нужно.
Кто подскажет, что я забыл прописать или сделал не верно, что у меня не работает валидация совместно с записью в сессию и отображением после провала валидации и соответственно редиректа, Формы с данными заполненными при отправки поста?
Источник
Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
#1 30.01.2018 12:07:46
Нет данных $_POST
Laravel-5.5
PHP 7.0.27
Linux carrot x86_64
Server: FPM/FastCGI (на локальном где все работает стоит- Apache 2.0 Handler )
Всем привет!
Столкнулся с такой проблемой. Разрабатывал проект на Laravel-5.5 на локальной машине(PHP/Server -7.0.26-2/Apache 2.0 Handler ). После чего залил весь проект,как есть на бесплатный хостинг, где у меня размещено несколько проектов наWordPress.
На хостинге в настройках выбрал версию PHP = 7.0.
Все в принципе работает нормально, за исключением того, что на фронтенд-части сервера не работает POST, — я его не получаю вообще.
На сайте есть форма- контактная форма и из нее из POST я должен получать данные для валидации и формирования письма, но POST я вообще не прлучаю.
При том что проект имеет бэкенд-часть, где у меня из Админ-панели редактируется некоторый контент и там есть аналогичные формы POST(для редактирования,добавления нового материала). Так вот эти формы в бэкэнде работают отлично (получаю POST данные из них, обрабатываю, валидирую). На локалке(с которой я копировал проект) конечно же все работает как нужно и все норм.
Контроллер
Роут:
Во вью, где находится эта форма все стандартно — я использую просто стандартную форму с нужными полями:
Как уже говорил, на бекен-части есть много форм и все они работают, — т.е.все норм, что меня вообще сбивает с толку, поскольку все одинаково по-сути, ну кроме того, что для бекенд-части у меня префикс другой и Класс-посредник другой, — тут [‘auth’], а в том роуте,
что выше приведен — [‘web’]:
В чем может заключаться проблема??
Сначала я подумал,что возможно не правильно перенес проект, т.к. по сути я просто, как есть, включая папку [vendor], скопировал сожержимое с локалки на бесплатный хост и там на хосте я не делал composer update, например. Но если так, то остальные формы на backend`e работают, — значит все норм. Так в чем же дело??
Изменено littus (30.01.2018 12:11:02)
Источник