Метод Post не работает, несмотря на добавление токена CSRF - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в Laravel, я пытался использовать форму и поэтому использовал метод post в ней после добавления токена CSRF. Также я скачал form builder package и сделал все необходимые настройки для того же. Но почему-то метод post в routes не работает. Хотя я пытался использовать get и any метод в маршрутах, и они отлично работали.

Controller:

use App\Http\Controllers\Controller;

class AdminController extends Controller
{
    public function index()
    {
        echo "admin controller";
    }

    public function formSubmit()
    {
        echo "Form Submit Method";
        return view('layouts\formView');
    }
}

View:

@extends('layouts\masterLayout')
@section('head')

{!!Form::open(['route'=>'f.submit'])!!}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
{!!Form::text('field-one')!!}
{!!Form::submit('')!!}
@endsection

Route

Route::post('form-submit',['uses'=>'Admin\AdminController@formSubmit', 'as'=>'f.submit']);

Ошибка: трассировка стека

in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('POST')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('POST')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 821
at Router->findRoute(object(Request)) in Router.php line 691
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 53

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вместо

Используйте следующее, чтобы создать поле ввода с уникальным токеном

{{csrf_token ()}}

Изменить маршрут на

Route :: post ('form-submit', ['as' => 'f.submit', 'использует' => 'Admin \ AdminController @ formSubmit']);

изменить метод представления

return view('layouts\formView');

Как

return view('layouts.formView');

Для Eg

return view('YourFolderName.FileName');
0 голосов
/ 25 апреля 2018

Изменение

{!!Form::open(['route'=>'f.submit'])!!}

до

{!!Form::open(['route'=>'f.submit', 'method' => 'POST'])!!}

Причина, вероятно, очевидна; -)

EDIT

Можете ли вы изменить подпись функции formSubmit на эту:

public function formSubmit(Request $request)
{
    echo "Form Submit Method";
    return view('layouts\formView');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...