Laravel路线带参数

时间:2017-02-21 05:45:25

标签: laravel routes

使用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的解密等变量,并可以发送到控制器用于该路由的函数?

4 个答案:

答案 0 :(得分:3)

只需将GET路线写到approveRequest

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

因为您使用的是网址参数,所以您只需在approve()函数中获取这些参数

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

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

答案 1 :(得分:0)

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

方法1

如果你制作如下网址:

<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.
 }

方法2使用请求方法:

如果您的网址如下:

  <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.
                }
             }

答案 2 :(得分:0)

通常我会用两种方式:

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
}
祝你好运!我希望有用。

答案 3 :(得分:0)

我使用了 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 
}