我正在做一个学校项目。在学校详细信息页面上工作时,我遇到了URL问题。我的客户需要一个干净的网址来运行AdWords。我的学校详细信息页面网址:http://edlooker.com/schools/detail/4/Shiksha-Juniors-Ganapathy。但他需要它像http://edlooker.com/Shiksha-Juniors-Ganapathy。如果有人帮助我,这将有所帮助,提前谢谢。
答案 0 :(得分:1)
您需要在web.php(如果是laravel 5.x)或routes.php(如果它是laravel 4.2)中的所有路径之后定义此路线。
Route::get('{school}','YourController@getIndex');
你的控制器应该有这样的getIndex
方法,
public function getIndex($school_name)
{
print_r($school_name);die; // This is just to print on page,
//otherwise you can write your logic or code to fetch school data and pass the data array to view from here.
}
这样,你不需要使用数据库来获取基于URL段的URL,你可以直接检查数据库中的学校名称,并从DB中获取数据后,你可以将它传递给学校细节视图。它将满足您的目的。
答案 1 :(得分:1)
查看文档中的Route Model Binding部分。
自定义键名
如果您希望模型绑定在检索给定模型类时使用除id之外的数据库列,则可以覆盖Eloquent模型上的getRouteKeyName方法:
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
答案 2 :(得分:0)
在这种情况下,您必须为所有请求使用一个前端控制器并按slugs获取数据,例如:
public function show($slug)
{
$page = Page::where('slug', $slug)->first();
....
}
您的路线可能如下所示:
Route::get('{slug}', 'FrontController@show');