我试图避免使用此代码:
Route::get('/', array('as' => 'create_content', 'uses' => 'SameController@create'));
Route::get('create_content', array('as' => 'create_content', 'uses' => 'SameController@create'));
并将它们组合成一条路线。因为控制器是一样的。
所以当你去索引" /"时,这个控制器将处于活动状态。和" create_content"。
如果我已经在这里 - 也许有人可以为我详细说明" as"在阵列?
谢谢!
答案 0 :(得分:3)
在Laravel中,您不仅限于路径的静态值。您也可以使用{}来表示变量。添加一个?变量名后使该变量可选。这些变量将传递给您的路由方法(在本例中为"创建" SameController方法)。
这可以与where方法相结合,以实现您想要的效果。 where方法允许您定义RegEx对变量允许的限制。
另一种选择是使用Route :: pattern,它基本上是一个更全面的" where()的版本。为方便起见,我列举了两个例子。 :)
至于' as',您可以在Laravel中命名路线。在用'作为'命名路线后,您可以通过Laravel的一些有用功能访问它,例如URL :: route(' nameOfRoute')或Redirect :: route (' nameOfRoute&#39);
一个有效的例子如下:
Route::pattern('myPattern', '(create_content)?');
Route::get('/{path?}', array('as' => 'nameOfRoute', 'uses' => 'SameController@create')
)->where('path', '(create_content)?');
// This is functionally equivalent to the above Route::get.
// Route::get('/{myPattern?}', array('as' => 'nameOfRoute', 'uses' => 'SameController@create')
// );
// Example of how to make use of the 'as' defined above.
Route::get('create_more_content', function() {
return Redirect::route('nameOfRoute');
});
答案 1 :(得分:0)
尽管您无法避免该代码,但由于以下原因。 因为它是同一个控制器的相同路由,所以请求仍然不同。
所以我认为你有两种选择......
1)使用上面的代码
或
2)破解你的.htaccess文件并将其重定向到/当请求为create_content时
相信我,第一个是最简单的方式。
你需要问的问题是,我是否需要第二条路线。是否存在像url那样传播到内容的内容?如果不是那么多,我会完全抛弃第二个。