2014-01-08 121 views
0

我在Laravel真的很新。如何正确使用laravel 4路由?

上下文:

  • 我创建2点迁移(users_table和posts_table)。
  • 我创建了2个模型,用户和帖子之间有正确的关系。
  • 我在我的数据库中播种了一些数据。

但我对路线和视图有点困惑。

这是我的原型:

// Posts 

Route::get('add', '[email protected]'); 
Route::post('add', '[email protected]'); 

Route::resource('posts', 'PostsController', array(
    'except' => array('create', 'store') 
)); 


// Users 

Route::get('login', '[email protected]'); 

Route::get('logout', '[email protected]'); 

Route::get('profile', array(
    'before' => 'auth', 
    'uses' => '[email protected]' 
)); 

Route::get('register', [email protected]'); 

Route::post('register', '[email protected]'); 

Route::resource('users', 'UsersController', array(
    'except' => array('create', 'store') 
)); 

你会为这个简单的例子做什么?

我真的不知道如何以一种适当的方式实现slug路由。

你有适当的路由和搜索引擎优化的好例子吗? (Github/BitBucket)

谢谢!

回答

0

这是后塞一个例子路线:

Route::get('posts/{slug}', array('as' => 'posts.show', 'uses' => '[email protected]')); 

而控制器显示方法:

class PostsController extends BaseController { 

    public function show($slug, $language = null) 
    { 
     if ($post = Post::findBySlug($slug)) 
     { 
      return View::make('posts.article')->with('post', $post); 
     } 

     return Redirect::route('posts.index'); 
    } 
} 

在你的模型,你可以通过蛞蝓方法添加一个发现:

public static function findBySlug($slug) 
{ 
    return Post::where('slug', $slug)->first(); 
} 

并保存你的slu,,如:

$post->title = Input::get('title'); 
$post->post = Input::get('text'); 
$post->slug = Str::slug(Input::get('title')); 
$post->save(); 
+0

感谢您的回答,文档说使用动态范围而不是findBySlug方法。我认为使用资源会简化我的应用程序,但我会创建自己的自定义路线。关于路线的另一个问题。您是否使用过Route :: get,Route :: post,...或Route :: any并在控制器中检查请求? – user3064931

+0

我使用Route :: get()和Route :: post()。你在控制器上的代码越少越好。另外,看看这篇关于路由的文章:http://philsturgeon.co.uk/blog/2013/07/beware-the-route-to-evil。 –