带参数的 Laravel 路由
Posted
技术标签:
【中文标题】带参数的 Laravel 路由【英文标题】:Laravel route with parameters 【发布时间】: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 解密并可以发送到用于该路由的控制器函数?
【问题讨论】:
【参考方案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.
【讨论】:
以上是关于带参数的 Laravel 路由的主要内容,如果未能解决你的问题,请参考以下文章