我正在尝试使用不显示ID的干净网址。例如,我目前有:
/Article/2
/Article/3
...
相反,我希望这些网址切换到这样的内容:
/Article/2/ -> /My_Super_Awesome_Article/
/Article/3/ -> /Another_Cool_Article
我的路线如下:
Route::resource('/article', 'ArticleController');
控制器是这样的:
class MenuController extends \BaseController {
public function show($id)
{
$page = Model::FindOrFail($id);
return View::make('article.show')->withPage($page);
}
// more functions
=============================================== ====
我找到了一种方法来做到这一点......但这肯定不是最好的方法。这是我目前用来替代的技术:
在控制器中,我添加了这个
public function Clean_Url_20()
{
$page = Model::FindOrFail( 20 );
return View::make('article.show')->withPage($page);
}
在路线中,我用这个:
Route::get('/My_Super_Cool_URL', 'ArticleController@Clean_Url_20');
那么......有更好的方法来实现这个目标吗?
答案 0 :(得分:0)
Route::get('/My_Super_Awesome_Article/{id}', array('as' => 'my.article.show', 'uses' => 'ArticleController@show'));
你的路线错了。请注意{id}
答案 1 :(得分:0)
如果您为每篇文章指定一条路线,则缺乏灵活性。如果你有1000篇文章,你必须定义1000条路线。
为什么不以另一种方式定义这些路线?例如:
Route::get('article/{articleSlug}','ArticlesController@show');
在您的控制器中,您只需使用slug查找特定文章。
顺便说一下,在准备文章数据时,可以使用Str :: slug()格式化文章标题。