2015-06-11 36 views
3

我已經在我的應用程序上做了雄辯的工作。 S are被保存得很好。 Buuuut ...我如何使用它來創建漂亮的網址?在laravel 5中使用slugs?

如果可能,我想在我的網址中使用它們而不是ID號碼。

+0

基本上所有東西都歸結爲您的路線。你仍然需要創建你的路由,指定段落E.g'Route :: get('/ home/{slug}',function(){});'' – Digitlimit

回答

6

是的,你可以在你的route使用slug和產生url,例如,如果你聲明的路線是這樣的:

Route::get('users/{username}', '[email protected]')->where('profile', '[a-z]+'); 
在你的控制器

然後,你可以聲明的方法是這樣的:

public function profile($username) 
{ 
    $user = User::where('username', $username)->first(); 
} 

username在這裏您蛞蝓和它必須是因爲where()...在路由聲明的字符串。如果通過integer,則無法找到route,並且將拋出404錯誤。

1

從Laravel 5.2起,如果使用路徑模型綁定,則可以像往常一樣使您的路由包含對象標識符(隱式綁定)。例如:

routes/web.php(Laravel 5.3)或app/Http/routes.php(Laravel 5.2):

Route::get('categories/{category}', '[email protected]'); 

在你CategoryController

show (Category $category) { 
    // 
} 

你需要做的唯一的事情就是告訴Laravel閱讀來自不同列的標識符,例如slug列,通過在您的雄辯模型中自定義密鑰名稱:

/** 
* Get the route key for the model. 
* 
* @return string 
*/ 
public function getRouteKeyName() 
{ 
    return 'slug'; 
} 

現在,您可以引用url的需要對象標識符slug標識符而不是id之一。

請參閱Laravel 5.3 (or 5.2) Route Model Biding