2014-10-14 2 views
0

내 응용 프로그램에 중첩 된 리소스 경로를 설정하고 있습니다. 현재, 나는 항상 같은 방법으로 사용자를로드하는거야,하지만 항상 Sentry::getUser()->clients()->find($userId)을 쓸 수 있도록 중복 보인다Laravel에서 중첩 된 리소스 경로 설정

// in app/routes 
Route::resource("users.folders", "FolderController"); 

// in app/controllers/api/v2 
class FolderController extends \BaseController { 

    public function index($userId) 
    { 
     return Response::json(Sentry::getUser()->clients()->find($userId)->folders()->with("resources")->get()); 
    } 

    public function show($userId, $id) 
    { 
     if($f = Sentry::getUser()->clients()->find($userId)->folders()->with("resources")->find($id)) 
     { 
      return Response::json($f); 
     } 

     return Response::json(["status" => "Not Found"], 404); 
    } 

    // ... 
} 

있습니다. __construct 함수에서 올바른 사용자를로드 할 수있는 방법이 있습니까?

나는

class FolderController extends \BaseController { 

    public function __construct($userId) 
    { 
     $this->user = Sentry::getUser()->clients()->find($userId); 
    } 

    public function index() 
    { 
     return Response::json($this->user->folders()->with("resources")->get()); 
    } 

    public function show($id) 
    { 
     if($f = $this->user->folders()->with("resources")->find($id)) 
     { 
      return Response::json($f); 
     } 

     return Response::json(["status" => "Not Found"], 404); 
    } 

    // ... 
} 

처럼 뭔가를 사랑하지만 그 예외가 발생합니다.

답변

0

나는 그것이 가능하다고 생각하지 않습니다하지만 당신은 기능이 코드를 이동할 수 있습니다 사용할 수있는 지금

private function getUsers($id) { 
    return Sentry::getUser()->clients()->find($userId); 
} 

및 기능에 :

return Response::json($this->getUsers($userId)->folders()->with("resources")->get());