Привет, я довольно новичок в Laravel и пытаюсь выполнить запрос на отправку простой формы. Я следую серии уроков YouTube ( laravel 5 | Section 3 | Part 4 Routing POST Requests ), однако в 5: 46 минут, есть уведомление, что этот метод применим только к версиям до Laravel 5.2.
Я попытался отредактировать метод VerifyCsrfToken.php, защищенный $ except = ['api /']; но это не имеет значения.
Мой фрагмент кода route.php:
Route::post('/form-handler', function(\Illuminate\Http\Request $request){ if(isset($request['option']) && $request['firstName']) { if(strlen($request['firstName']) > 0){ return view('forms.formResults', ['action' => $request['option'], 'name' => $request['firstName']]); } return redirect()->back(); } return redirect()->back(); // Return user back to the page they came from })->name('form-handler');
Мое приветствие.blade.php:
<div class="form-group"> <form action="{{route('form-handler')}}" method="post" class="form-control"> <label for="select-action">Select an option:</label> <select id="select-action" name="option"> <option value="option1">Option1</option> <option value="option2">Option2</option> <option value="option3">Option3</option> </select> <input type="text" name="firstName"> <button type="submit">Submit Details</button> <input type="hidden" value="{{Session::token()}}" name="_token"> <!-- Laravel Security Measure, Note name must always be '_token'--> </form> </div>
Мое полное сообщение об ошибке:
MethodNotAllowedHttpException in RouteCollection.php line 218: 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 Debugbar.php line 49 at Debugbar->handle(object(Request), object(Closure)) at call_user_func_array(array(object(Debugbar), '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)) 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
Является ли этот метод реализации полностью недействительным или ему просто нужно несколько твиков?
Предпочтительно, я хотел бы знать, какой оптимальный метод почты предназначен для извлечения данных формы, при этом защищая ваш сайт от подделок с запросами на межсайтовый запрос.
Любые исправления или альтернативные решения будут высоко оценены.
Пожалуйста, не стесняйтесь спрашивать о каких-либо ресурсах, которые я, возможно, забыл.
Полный routes.php (Примечание. Я также попытался добавить метод post в группу маршрутов промежуточного программного обеспечения):
<?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ /* Route::get('/', function () { return view('home.welcome'); }); */ Route::get('/', 'WelcomeController@index')->name('home'); Route::resource('lists', 'ListsController'); Route::get('/contact/{firstName?}', function($firstName = null) { return view('about.contact', ['firstName' => $firstName]); })->name('contact'); Route::get('/blog', function() { return view('blog.blog'); })->name('blog'); Route::group(['middleware' => 'auth'], function () { Route::post('/form-handler', function(\Illuminate\Http\Request $request){ if(isset($request['option']) && $request['firstName']) { if(strlen($request['firstName']) > 0){ return view('forms.formResults', ['action' => $request['option'], 'name' => $request['firstName']]); // You create the view } return redirect()->back(); } return redirect()->back(); // Return user back to the page they came from })->name('form-handler'); });