使用laravel从Input :: get()访问URL参数

时间:2015-08-18 17:05:25

标签: php laravel laravel-4 laravel-5

我有这样的路线:

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=漂亮网址中使用它?

1 个答案:

答案 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的空白页。

希望这会有所帮助,因为你的问题很明显。