我正在尝试在Laravel中创建一个路由,以获取动态URL以加载特定的控制器操作。我可以使用以下代码将其路由到控制器:
Route::get('/something.html', array('uses' => 'MyController@getView'));
我无法弄清楚我是如何将这条路径中的变量传递给控制器的。在这种情况下,我想将id值传递给控制器操作。
Laravel有可能吗?还有另一种方法吗?
答案 0 :(得分:1)
您没有向我们提供足够的信息,因此您需要问自己两个基本问题:这些信息来自哪里?您是否可以在控制器内访问此信息而无需通过routes.php文件传递?
如果您要在'edit.php'文件中以某种方式生成此信息:
$information = WhateverService::getInformation();
你不能把它传递给你的控制器,因为你的控制器并没有真正在这个文件中被触发,这只是一个可用路由的列表,在某些时候可能会或可能不会被击中。当路线被击中时,Laravel将通过另一个内部服务开火。
但您可能会在控制器中使用相同的代码行:
class MyController extends BaseController {
function getView()
{
$information = WhateverService::getInformation();
return View::make('myview')->with(compact('information'));
}
}
在MVC中,控制器用于接收HTTP请求并通过模型(或服务或存储库)生成信息以传递给您的视图,这可以生成新的网页。
如果您的信息中包含此信息并且您希望将其隐藏到您的something.html路线,请使用POST方法而不是GET:
Route::post('/something.html', array('uses' => 'MyController@getView'));
在您的控制器内部通过以下方式接收该信息:
class MyController extends BaseController {
function getView()
{
$information = Input::get('information');
return View::make('myview')->with(compact('information'));
}
}