【问题标题】:Laravel route with parameters带参数的 Laravel 路由
【发布时间】:2017-07-10 14:51:16
【问题描述】:

我正在使用 Laravel 路线从电子邮件中批准某些表格。 所以我加密了一些变量并创建了如下链接:

<a href="http://localhost/travel/tr/approveRequest?id=<?=$Encoded_travelRq_id?>&gsID<?=$Encoded_emp_gslab_id?>&decrypt<?=$Encoded_iv?>/">Approve</a>;

现在如何在 Laravel 端为此编写路由,在其中我可以分离 id、gsID 等变量,从 url 解密并可以发送到用于该路由的控制器函数?

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    通常我使用两种方式:

    1º方式:

    路线:

    Route::get('approveRequest', 'ApproveController@approve');
    

    控制器:

    public function approve (Request $request) {
        $var1 = $request->input('var1');
        $var2 = $request->input('var2');
        
        // (...) do something with $var1 and $var2
    }
    

    2º方式:

    路线:

    Route::get('approveRequest/{var1}/{var2}', 'ApproveController@approve');
    

    控制器:

    public function approve ($var1, $var2) {
        
        // (...) do something with $var1 and $var2: they already have a instance
    }
    

    【讨论】:

      【解决方案2】:

      只需写一个GET 路由到approveRequest

      Route::get('approveRequest', 'ApproveController@approve');
      

      因为您使用的是 URL 参数,所以您可以像这样在 approve() 函数中简单地获取它们

      public function approve(Request $request) 
      {
           $id = $request->id;
           $gsID = $request->get('gsID');
           .... and so on for all your variables.
      }
      

      使用这种方法,参数的顺序无关紧要。

      【讨论】:

      • 为此我的 url 生成为 localhost/travel/tr/approveRequest?id=SR4%3D 我将路由写为 Route::get('approveRequest/{par1}', 'Gslab\Travel\TravelRequestController@approveTravelRequest');并且在控制器端公共函数approveTravelRequest($par1) { echo $id = $par1;出口; } 仍然没有采取路线没有得到
      • 不要在路由定义中加入参数。看看我是怎么做的。因为您使用带问号? 的可选参数。
      【解决方案3】:

      我使用了 3 种方法:

      带控制器的单向

      Route::get('post', 'PostController@store');
      public function store(Request $request)
      {
          $name = $request->input('name');
          // get your params               
      }
      

      2 路封闭路线

      Route::get('/', function (Request $request) {
          $name = $request->name
      //you can use this without input('name')
      });
      

      3- 在控制器中使用参数

      Route::get('comment/{var}/{var2}', 'CommentController@edit');
      
      public function approve ($var, $var2) {        
          // use the variables 
      }
      

      【讨论】:

        【解决方案4】:

        有很多方法可以做到这一点。

        方法一

        如果你的网址如下:

        <a href="http://localhost/travel/tr/approveRequest/<?=$Encoded_travelRq_id?>/<?=$Encoded_emp_gslab_id?>/<?=$Encoded_iv?>">Approve</a>;
        

        您可以使用如下参数制作路线。

         Route::get('approveRequest/{par1}/{par2}/{par3}', 'ApproveController@approve');
        

        并在您的函数中获取相应的参数,如下所示:

        public function approve($par1,$par2,$par3,) 
        {
             $id = $par1;
             $gsID = $par2;
             .... and so on for all your variables.
         }
        

        方法二使用请求方法:

        如果你的网址是这样的:

        <a href="http://localhost/travel/tr/approveRequest?id=<?=$Encoded_travelRq_id?>&gsID<?=$Encoded_emp_gslab_id?>&decrypt<?=$Encoded_iv?>/">Approve</a>;
        

        然后定义Route Like:

        Route::post('approveRequest', 'ApproveController@approve');
        

        然后在你的控制器函数中你得到如下参数:

        在你的控制器类命名空间后使用Request

        namespace App\Http\Controllers;
        use Illuminate\Http\Request;
        
        class SomeClassController extends Controller {
        
            public function approve(Request $request) 
            {
                $id = $request->id;
                $gsID = $request->get('gsID');
                 .... and so on for all your variables.
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2017-04-04
          • 2017-10-21
          • 2014-05-29
          • 1970-01-01
          • 2018-08-31
          • 2015-04-17
          • 2016-01-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多