laravel路由名称参数

时间:2019-05-30 09:38:05

标签: php laravel routes

使用pageNation向控制器请求页面的值。但是为什么任何参数都无法到达控制器?

 Route::get('/index', 'Penpal\ViewController@index')->name('penpal.index');

 <form action="{!! route('penpal.index', ['menu' => 'p11-c3']) !!}" method="get">
            <select id="inputState" class="form-control" style="height:35px; width:80%" name="pagination" onchange="this.form.submit()">
                    <option value="3">@lang('penpal/component/indexMenu.twelve')</option>
                    <option value="4">@lang('penpal/component/indexMenu.twenty_four')</option>
                    <option value="5">@lang('penpal/component/indexMenu.thirty_six')</option>
                </select>
        </form>    


 public function index (Request $request){
    return $request;\
 }

无法从控制器接收到名为“菜单”的参数。

3 个答案:

答案 0 :(得分:3)

您的<form>使用的是method='get',而不是method='POST'(后者用于通过表单将数据发布到请求。

您还需要在刀片模板中使用@csrf,否则将无法发布数据:

<form action="{!! route('penpal.index', ['menu' => 'p11-c3']) !!}" method="POST">
   @csrf
   <select id="inputState" class="form-control" style="height:35px; width:80%" name="pagination" onchange="this.form.submit()">
      <option value="3">@lang('penpal/component/indexMenu.twelve')</option>
      <option value="4">@lang('penpal/component/indexMenu.twenty_four')</option>
      <option value="5">@lang('penpal/component/indexMenu.thirty_six')</option>
   </select>
</form>

最后,确保您的路线是::post()路线。

答案 1 :(得分:0)

Use Post method both route and form

<form action="{!! route('penpal.index', ['menu' => 'p11-c3']) !!}" method="post">
Route::match(['get','post'],'/index', 'Penpal\ViewController@index')->name('penpal.index');

答案 2 :(得分:0)

您没有为路由设置任何路由参数,也没有将任何参数传递给控制器​​方法。并且最好使用POST然后使用GET。

将此更改为

Route::get('/index', 'Penpal\ViewController@index')->name('penpal.index');

Route::post('/index/{menu?}', 'Penpal\ViewController@index')->name('penpal.index');

和您的表格

<form action="{{ route('penpal.index', ['menu' => 'p11-c3']) }}" method="POST">
@csrf

在您的控制器方法中,您可以获取传递的参数

 public function index (Request $request, $menu){
    print_r($menu);
 }