Добавление действия формы в html в laravel
Я не могу передать url в теге action html формы.
<form method="post" action="??what to write here??" accept-charset="UTF-8">
Я хочу установить его действие для функции [email protected]_in
в файле WelcomeController
в контроллерах.
Вот мои маршруты:
Route::get('/','[email protected]');
Route::post('/', array('as' => 'log_in', 'uses' => '[email protected]_in'));
Route::get('home', '[email protected]');
После отправки он сохраняет тот же URL
http://localhost:8000/
И основная строка ошибки
Whoops, looks like something went wrong.
После этого существует 1/1 TokenMismatchException in compiled.php line 2440:
Ответы
Ответ 1
С помощью помощника action()
вы можете создать URL-адрес вашего маршрута:
<form method="post" action="{{ action('[email protected]_in') }}" accept-charset="UTF-8">
Обратите внимание, что установка по умолчанию Laravel 5 уже содержит представления и контроллеры для всего процесса проверки подлинности. Просто перейдите к /home
при новой установке, и вы должны перенаправить на страницу входа.
Также обязательно прочитайте раздел Аутентификация в документах
Ошибка, которую вы получаете сейчас (TokenMismatchException
), связана с тем, что Laravel защита CSRF из коробки
Чтобы использовать его (и убрать ошибку), добавьте скрытое поле в вашу форму:
<input name="_token" type="hidden" value="{{ csrf_token() }}"/>
В качестве альтернативы вы также можете отключить защиту CSRF, удалив 'App\Http\Middleware\VerifyCsrfToken'
из массива $middleware
в app/Http/Kernel.php
Ответ 2
если вы хотите вызвать контроллер из действия формы, которое использовало следующий код:
<form action="{{ action('[email protected]') }}" >
Здесь SchoolController
- имя контроллера, а getSchool
- имя метода, вы должны использовать get
или post
перед именем метода, которое должно быть таким же, как в теге формы.
Ответ 3
1) В Laravel 5 удален помощник по формам. Сначала необходимо установить коллектив laravel.
Ссылка для ссылки: https://laravelcollective.com/docs/5.1/html
{!! Form::open(array('route' => 'log_in')) !!}
ИЛИ ЖЕ
{!! Form::open(array('route' => '/')) !!}
2) Для laravel 4 форма помощника уже есть
{{ Form::open(array('url' => '/')) }}
Ответ 4
Используйте action="{{ action('[email protected]_in') }}"
однако TokenMismatchException означает, что в вашей форме отсутствует токен CSRF.
Вы можете добавить это, используя <input name="_token" type="hidden" value="{{ csrf_token() }}">
Ответ 5
{{ Form::open(array('action' => "[email protected]_in")) }}
...
{{ Form::close() }}
Ответ 6
Следующее должно работать.
{{ Form::open( array('url' => action('[email protected]_in'), 'files'=>true,'method'=>'post') ) }}
...
{{ Form::close() }}
Ответ 7
Вам нужно установить имя для ваших маршрутов. Как это:
Route::get('/','[email protected]')->name('welcome.home');
Route::post('/', array('as' => 'log_in', 'uses' => '[email protected]_in'))->name('welcome.log_in');
Route::get('home', '[email protected]')->name('home.index');
Я просто назвал Маршруты, которым это нужно. В моём случае звонить из формы тега по шаблону блейда. Как это:
<form action="{{ route('home.index') }}" >
Или вы можете сделать это:
<form action="/" >
Ответ 8
Я хотел сохранить сообщение в своем приложении, поэтому я создал контроллер сообщений (PostsController) с включенными ресурсами:
php artisan make:controller PostsController --resource
Контроллер был создан со всеми методами, необходимыми для создания приложения CRUD, затем я добавил следующий код в web.php
в папке маршрутов:
Route::resource('posts', 'PostsController');
Я решил проблему формы действий, выполнив это:
- Я проверил свой список маршрутизации с помощью
php artisan route:list
- Я искал название маршрута для метода store в таблице результатов в терминале и нашел его под именем
posts.store
- Я добавил это в атрибут действия моей формы:
action="{{route('posts.store')}}"
вместо action="??what to write here??"
Ответ 9
Форма сообщения Действие:
<form method="post" action="{{url('login')}}" accept-charset="UTF-8">
Измените свой маршрут: В Маршрутах → Web.php
Route::post('login','[email protected]_in');
Ответ 10
Laravel 5.8 Шаг 1: перейдите по пути route/api.php add: Route :: post ('welcome/login', 'WelcomeController @login') → name ('welcome.login'); Шаг 2: Перейти к представлению файла пути
<form method="POST" action="{{ route('welcome.login') }}">
</form>
Результат html
<form method="POST" action="http://localhost/api/welcome/login">
<form>
Ответ 11
В вашей форме также отсутствует '{{csrf_field()}}'