【问题标题】:laravel route name parameterlaravel 路由名称参数
【发布时间】:2019-10-15 22:50:15
【问题描述】:

使用 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;\
 }

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

【问题讨论】:

    标签: php laravel routes


    【解决方案1】:

    您还没有为您的路由设置任何路由参数,也没有将任何参数传递给您的控制器方法。使用 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);
     }
    

    【讨论】:

      【解决方案2】:
      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');
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,但包含解释确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
      【解决方案3】:

      您的&lt;form&gt; 使用的是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() 路由。

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        • 2016-03-05
        • 2016-05-01
        • 1970-01-01
        相关资源
        最近更新 更多