当方法更改为 GET 路由时,无法像 POST 方法 Laravel 那样工作

问题描述

我有一个搜索栏:

{!! Form::open(['name' => 'myForm','method' => 'GET','action' => 'AreaController@search','files' => true,'onsubmit' => "return validateForm()"]) 
!!}
         
    {!! Form::submit('جستجو',['class' => 'btn btn-info']) !!}
                       
{!! Form::close() !!}

在路由文件中,web.PHP

Route::get('area/search/','AreaController@search')->name('area.search');

AreaController

public function search(Request $request) {
    return " it is working" ;
}

但是当我点击按钮时,浏览器显示的是一个空白页面。当我使用 POST 方法时它可以工作,但如果我更改为 GET 方法,它就不起作用。

谢谢。

解决方法

对于Post方法,需要在表单中添加CSRF Token


{!! Form::open(['method' => 'POST']) !!}  <--------- Change to POST method
    
{!! Form::token() !!}  <----------- Add this line 


    {!! Form::submit('جستجو',['class' => 'btn btn-info']) !!}
                       
{!! Form::close() !!}


Route::post('area/search/','areacontroller@search')->name('area.search');

如果您不想将 CSRF Token 添加到表单,您可以将其添加到路由文件中。

将CSRF过滤器附加到路由


Route::post('profile',array('before' => 'csrf',function()
{
    //
}));

更多详情,您可以参考https://laravel.com/docs/4.2/html