2014-04-06 4 views
0

나는 Chris Fidao가 사용중인 Implementing Laravel에 매우 가까운 방식으로 저장소 패턴을 사용하고 있습니다. 기본적으로 인터페이스를 구현하고 모델을 주입하는 구체적인 저장소 클래스가 있습니다.경로에 저장소 바인딩하기

이제 라우라벨의 루트 바인딩을 활용하고 싶습니다. 저장소를 사용하고 있기 때문에 직접 모델에 바인딩 할 수는 없습니다 ... 맞습니까? 그러나 나는 이것을하지 못했습니다.

는 그와 같은 인터페이스 내 콘크리트 저장소를 결합하는 서비스 제공 업체를 사용하고 있습니다 :

$app->bind('App\Repositories\UserInterface', function ($app) { 
     return new EloquentUser(new User); 
    }); 

어떻게 저장소 인터페이스에 내 경로를 결합 할 수있다? 사소한 것 같지만 조금 잃어버린 ...

미리 감사드립니다! :)

+0

왜 경로를 리포에 바인딩 하시겠습니까? 라우팅은 비즈니스를 지속성에서 분리하는 것이 목적 인 리포지토리가 아닌 요청 처리기 (더 많거나 적은 서비스)를 가리켜 야합니다. – MikeSW

+0

솔루션을 찾았습니까? – Victor

답변

1

당신은 당신이 UserController를 사용하는 경로가 가정, 예를 들어, 경로에 모델을 바인딩하지 않고 폼에 모델을 전달하는 다른 방법을 사용할 수 있으며,이 컨트롤러입니다 :

class UserController extends BaseController { 
    public function __construct(UserInterface $UserRepo) 
    { 
     $this->repo = $UserRepo; 
    } 

    public function edit($id) 
    { 
     $user = $this->user->find($id); 
     return View::make('user.edit')->with('user', $user); 
    } 
} 

user.edit보기에서 양식 :

{{ Form::model($user, array('route' => array('user.update', $user->id))) }} 
0

당신은 당신의 경로에있는 리포 다음과 같은 방법을 사용할 수 있습니다. 그러나, 당신은 이것을 정말로 필요로합니까?

\\the repo is in the Branches folder 
use App\Repos\Branches\BranchRepository; 

Route::get('branches',function(BranchRepository $branchRepo){ 
    \\using a method of your repo - in this case using getData() method 
    return $branchRepo->getData(); 
}); 
관련 문제