2016-07-12 3 views
-1

이상한 시나리오가 있습니다. 모델 이름이 문자열로 표시되므로 사용하고 싶지만 가져 오기 클래스 파트는 어떻게 관리합니까? 어떤 아이디어? Yii 2. 문자열의 모델 사용

$model = new $tmpModel; 
    var_dump($model); 

지금 내가 얻을 :

이 나는 ​​노력했다 "클래스 '기구'을 (를) 찾을 수 없습니다",하지만 오류를 수동으로 만 테스트 클래스를 가져 왔지만 여전히있다.

use app\models\Organization; 

아이디어가 있으십니까?

수정 : 잠을 좀 자야한다고 생각합니다. 의견의 도움으로 여기 코드는 다음과 같습니다

$className = "app\models\\".$this->modelSave; 

$model = Yii::createObject([ 
      'class' => $className, 
     ]); 

var_dump($model); 
+0

문자열을 'use app \ models \ CONSTANT;'와 같은 상수로 설정해보십시오. – ldg

+0

제안 해 주셔서 감사합니다. 수동으로 클래스 이름을 설정했습니다 : use app \ models \ Organization,하지만 여전히 실패합니다 – Eduardo

+0

Yii2 오토로더를 사용해 보셨습니까? http://www.yiiframework.com/doc-2.0/guide-concept-autoloading.html – ldg

답변

0

YII 방법에서는으로 사용 할 수 있습니다 ..

$className = 'path\folder\FileName'; 
$model = Yii::createObject([ 
      'class' => $className, 
     ]); 

이 방법은 또한, 종속 객체를 식별하여 그것들을 초기화하고 새로 생성 된 객체로 주입 할 수 있습니다.

+0

Yii의 올바른 사용법을 선택했습니다. :) – Eduardo

2

당신은 변수, 즉의 모델 FQN (정규화 된 이름)을 사용합니다.

$tmpModel = "app\models\Organization"; 

$model = new $tmpModel(); 

var_dump($model); 
+0

고마워!, 나는 이것을하고 있었다. 그러나 웬일인지 그것이 작동하지 않고 있었다 (아마 약간의 잠을 필요로했다). $ className = 'app \ models \\'두 번째 백 슬래시를 이스케이프해야 함을 기억하십시오. $ this-> modelSave; – Eduardo

+0

당신은 오신 것을 환영합니다. –