6

通常の CRUD メソッド (インデックス、作成、保存、表示、編集、更新、破棄) を持つこのブログ リソースがあります。

routes.php に次のルートがあります。

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

しかし、index と show 以外はすべて制限したいと考えています。ので、私は持っています

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

インデックスには問題ありませんが、show メソッドをルーティングする方法がわかりません。それとも別の方法がありますか?リソースをルーティングする代わりに、すべての URI を個別にルーティングし、制限したいものを制限付きアクセス ルートに配置する必要がありますか?

乾杯

4

2 に答える 2

13

__constructLaravel には、 を使用してコントローラーのメソッドでフィルターを指定できる機能があります$this->beforeFilter。この関数は、例外を提供する (または特定のメソッドに対してのみフィルターを有効にする) ことができる 2 番目の引数を取ります。元のルート ファイルを使用して、コントローラーを次のように設定してみてください。

class PostsController extends BaseController {

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

    // ...

Laravel ドキュメントのコントローラ フィルタを参照してください。完全に文書化されているわけではありませんが、ここから Laravel の内臓へのより深い旅を始めることもできます。

于 2013-09-05T22:01:36.407 に答える