我有这样的路线:
Route::get('demo/{system?}', 'MonitorController@demo');
我正在使用它,因为我希望我的网址看起来像这样:
mysite.com/demo/spain-system
spain-system
将成为我需要获得的变量。
现在,我得到这样的话:
public function demo($systemName = null){
}
但我希望能够访问它,好像它是一个带有Input::get('system')
的URL参数,因此我可以从其他方法访问它,甚至可以从BaseController.php
等其他控制器访问它。 / p>
有没有办法实现这个目标?
我已经使用了Route::input('system')
,但是,当我将其作为get参数传递时(在其他Ajax调用中等等),它不起作用
在PHP中,我们可以使用$_GET
函数获取URL参数,laravel也提供函数Input::get()
。
如果laravel中没有路由,我会使用.htaccess
重写规则来改变这一点:
mysite.com/demo/?system=spain-system
对此:
mysite.com/demo/spain-system
我仍然可以使用system
将变量$_GET["system"]
检索为GET参数。
这就是我对laravel所期望的那种,但它似乎只是将它视为demo
方法的参数而不是URL变量。
有没有办法继续将其视为网址变量,同时在没有?system=
的漂亮网址中使用它?
答案 0 :(得分:0)
所以你真的只想得到这样的网址? mysite.com/demo/spain-system
代替mysite.com/demo/?system=spain-system
? Laravel默认提供?
看,当你想让路由器变量{system?}
可以访问时,你需要这样做:
在您的路由器中:
Route::get('demo/{system}', 'MonitorController@demo');
然后你有一个控制器,这个noods站在:
public function demo($system)
{
//your further system
//You are be able to access the $system variable
echo $system; //just to show the idea of it.
}
现在转到localhost/demo/a-system-name/
,您会看到一个a-system-name
的空白页。
希望这会有所帮助,因为你的问题很明显。