Php Laravel 5:自定义路由

Php Laravel 5:自定义路由,php,laravel,routing,laravel-5,Php,Laravel,Routing,Laravel 5,我正在构建一个站点,它有两种不同类型的组件:页面(包含图像和文本的静态文件)和表单(包含输入的动态文档)。我将通过一个管理面板创建和编辑这两个文件,因此每个文件都有一个存储库模型和控制器 在Laravel中很容易创建如下路线: Route::match(['get', 'post'], '/pages/{one?}/{two?}/{three?}', 'PagesController@loadPage'); Route::match(['get', 'post'], '/forms/{one?}

我正在构建一个站点,它有两种不同类型的组件:
页面(包含图像和文本的静态文件)和
表单(包含输入的动态文档)。我将通过一个管理面板创建和编辑这两个文件,因此每个文件都有一个存储库模型和控制器

在Laravel中很容易创建如下路线:

Route::match(['get', 'post'], '/pages/{one?}/{two?}/{three?}', 'PagesController@loadPage');
Route::match(['get', 'post'], '/forms/{one?}/{two?}/{three?}', 'FormsController@loadForm');
Route::match(['get', 'post'], '{one?}/{two?}/{three?}', function() {
    $path = Path::where('path', '=', implode('/', func_get_args()))->take(1)->get()->first();
    // Somehow use $path->controller to load the proper controller
});
不幸的是,这将导致使用该网站的用户出现一些丑陋的URL:

我希望从这些链接中删除“页面”或“表单”,然后检查数据库以确定要加载哪一个:

我创建了一个具有两个属性的
Path
雄辩模型:
Path
controller
。因此,我目前有以下几点:

Route::match(['get', 'post'], '/pages/{one?}/{two?}/{three?}', 'PagesController@loadPage');
Route::match(['get', 'post'], '/forms/{one?}/{two?}/{three?}', 'FormsController@loadForm');
Route::match(['get', 'post'], '{one?}/{two?}/{three?}', function() {
    $path = Path::where('path', '=', implode('/', func_get_args()))->take(1)->get()->first();
    // Somehow use $path->controller to load the proper controller
});
我尝试过使用
App::make($path->controller)
,但它抛出了一个错误:“Class PagesController不存在”


我相信我可以在请求到达我的应用程序之前使用中间件来修改请求(因此,在不修改用户看到的URL的情况下,可以相应地预挂“pages/”或“forms/”),但是我找不到这样做的方法。

我已经做了一个测试来完全满足这一要求。希望你会发现这个帮助是充分的

我的路线如下所示:以防万一Get方法:

Route::get('test/{param}', array('as' => 'test1', function(){
    return "glade to see you here....1";
}));
Route::get('test/{param}', array('as' => 'test2', function(){
    return "glade to see you here....2";
}));
我的html看起来像:

{{link_to_route('test1',"test1",1)}}
{{link_to_route('test2',"test2",2)}}
让我重新表述一下,我在这里关注的是用不同的名称定义类似的路线,并通过它们的名称来调用它们。通过这种方法,您可以实现您的需求


但是,您可以使用不同的名称定义您的路径,无论您的路径看起来如何相似,如果还不清楚如何实现您的目标,请告诉我。

一件简单的事情就是根据数据库记录检查url模式。这就是我对代表复杂网站结构的简单URL所做的。您可以使用存储url字符串和url类型(页面、表单…)的表,每个url都是唯一的。

很遗憾,这不符合我的要求。这允许您创建到具有相同路径的路由的链接,但不允许您使用用于重定向的雄辩模型创建具有相同基本名称的单独路径。在您的示例中,无法直接导航到第一个闭包(“glade在此见到您…”1)-加载返回“glade在此见到您…”2