2012-11-26 3 views
1

beforeAction 메서드 내에서 스크립트를 등록하려고합니다 (Yii Framework). 하지만 모든 컨트롤러에서이 메서드를 반복하고 싶지 않아, 제 질문은 어떻게 모든 컨트롤러가 상속받을 beforeAction()을 만들 수 있습니까?모든 컨트롤러에 적용되는 beforeAction()을 작성하려면 어떻게해야합니까?

들으,

+0

yii가 동일한 지 정확히 기억하지 못하지만 부트 스트랩 파일에서 찾으려고합니다. Zend에서도 비슷한 문제가있었습니다. –

답변

0

기본 yiic은 YII 웹 애플리케이션이 프로젝트/보호/구성 요소/Controller.php의 컨트롤러 클래스가 생성 앱의 모든 컨트롤러는이 컨트롤러에서 상속합니다.

이 클래스는 beforeAction을 추가하기에 완벽한 장소입니다.

편집 : 경우; 당신이 yiic 사용하지 않은이 기본 컨트롤러 클래스가없는, 그것은 당신의 컨트롤러가이 새로운 클래스에서 확장이 다음 CController에서 확장하는 새 클래스를 추가하고 괜찮습니다. 이 상위 컨트롤러 클래스에 컨트롤러에 대한 모든 공통 기능을 유지할 수 있습니다.

+1

니스, 염두에두고 같은 일을했지만 약간의 확인이 필요했습니다. –

+0

괜찮습니다.이 대답을 만들기 위해 작은 편집을했는데,이 이크를 사용하여 응용 프로그램을 만들지 않았습니다. –

0

구성 요소 디렉토리 내에 BaseController.php를 만들어야합니다. 이 파일 안에 CController로부터 BaseController를 상속받습니다. 거기에 행동을 적 으십시오. 이 후 BaseController에서 모든 컨트롤러를 상속해야합니다.

0

1)이 컨트롤러에서 CController (예 SomeController)

2)합니다 (beforeAction에서 스크립트를 등록) (예를 SomeController)로 확장과 공통 부모 컨트롤러를 만들기

3) SiteController의이 컨트롤러를 확장 또는 모듈 컨트롤러.

<?php 

class SomeController extends CController 
{ 
    public function beforeAction() 
    { 
     // Your Register Script 
    } 
} 


class SiteController extends SomeController 
{ 
    // public function actionIndex 
} 
관련 문제