2014-01-10 3 views
1

간단한 콘텐츠 관리 페이지를 앱에 추가하는 것과 같은 기본 기능을 제공하는 Laravel 4 패키지가 한 세트 많이 있습니다. 고객 사례를 추가하십시오.앱에서 Laravel 패키지 모델을 확장하고 패키지 컨트롤러가 패키지 모델이 아닌 패키지 컨트롤러를 사용하도록했습니다.

패키지에는 마이그레이션, 모델, 컨트롤러, 경로, 견본보기 및 프로젝트에 추가하는 샘플보기 및 부분이 포함되어있어 정말 쉽고 빠릅니다.

현재 프로젝트에서 CMS를 통해 선택한대로 특정 페이지에 대한 관련 회원 정보를 표시하기 위해 페이지에서 회원 평가로 belongsTo 관계를 추가해야합니다.

페이지 테이블에 필드를 추가하고 응용 프로그램에서 페이지 패키지 모델을 확장하고 관계를 추가하고 패키지 대신 내 모델을 사용하도록 CMS 패키지 구성 파일을 구성하기 위해 마이그레이션을 만들었습니다.

내가 지금 가지고있는 문제는 슬러그가 주어진 페이지를 렌더링하는 패키지 컨트롤러의 show 메소드가 패키지 모델을 확장하는 내 앱이 아닌 패키지의 모델을 사용한다는 것입니다.

package controller 패키지의 패키지가 아닌 내 앱의 모델을 사용하는 가장 좋은 방법은 무엇입니까?

패키지의 설정 파일에 네임 스페이스 모델 파일의 이름을 추가 할 수있는 패키지를 업데이트 할 수 있다고 생각했는데, 패키지의 설정 파일에서 내 앱의 버전으로 변경할 수있었습니다. 그 config 파일을 수정하고, 패키지 모델의 이름을 하드 코딩하는 대신 config 파일을보기 위해 패키지 컨트롤러를 업데이트 하시겠습니까?

어쨌든 IoC 컨테이너를 사용해야 할 수도 있습니다.하지만 정확히 어떻게해야하는지 잘 모르겠습니다. 어쩌면 패키지 모델의 인스턴스가 삽입 될 것으로 기대하는 생성자를 추가 할 수도 있지만, IoC 컨테이너에 패키지의 모델 대신 앱의 모델을 삽입하는 방법은 무엇일까요? 누구라도 조언을하나요?

답변

2

IoC 컨테이너를 사용하여 알아 냈습니다. 여기

App::bind('Fbf\LaravelPages\PagesController', function() { 
    return new Fbf\LaravelPages\PagesController(new Page); 
}); 

있다 : I가 주입되도록 상기 패키지 모델의 인스턴스를 예상하는 생성자를 사용하여 상술 한 바와 같이 패키지 제어부를 업데이트하고 앱의 끝에 다음 추가// global.php 시작 내 app/models 디렉토리의 모델

<?php 

class Page extends Fbf\LaravelPages\Page { 

    public function testimonial() 
    { 
     return $this->belongsTo('Fbf\LaravelTestimonials\Testimonial'); 
    } 

}