Добавление действия формы в 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');

Я решил проблему формы действий, выполнив это:

  1. Я проверил свой список маршрутизации с помощью php artisan route:list
  2. Я искал название маршрута для метода store в таблице результатов в терминале и нашел его под именем posts.store
  3. Я добавил это в атрибут действия моей формы: 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()}}'