6

我有这个博客资源,它具有常用的 CRUD 方法。(索引、创建、存储、显示、编辑、更新、销毁)。

我的 routes.php 中有以下路线:

Route::resource('blog', 'PostsController');

但我想限制除索引和显示之外的所有内容。所以我有

Route::get('blog', 'PostsController@index');
Route::group(array('before' => 'auth'), function()
{
    Route::resource('blog', 'PostsController');
});

这对索引很好,但我不知道如何路由显示方法?还是有其他方法?我应该单独路由每个 URI 并将我想要限制的那些放在我的受限访问路由中,而不是路由资源?

干杯

4

2 回答 2

13

Laravel 有一个特性可以让你在控制器的__construct方法中使用$this->beforeFilter. 此函数采用第二个参数,允许您提供异常(或仅对某些方法启用过滤器)。尝试使用您的原始路由文件并像这样设置您的控制器:

class PostsController extends BaseController {

    function __construct() {
        // ...
        $this->beforeFilter('auth', array('except' => array('index', 'show')));
        // ...
    }

    // ...

请参阅Laravel 文档中的控制器过滤器。它没有完全有据可查,但你也可以从这里开始更深入地了解 Laravel 的内容。

于 2013-09-05T22:01:36.407 回答
0

在 Laravel 5 中,您可以像这样使用中间件函数:

$this->middleware('auth', array('except' => array('index', 'show')));
于 2015-03-19T04:29:27.333 回答