2016-07-12 4 views
-1

私は奇妙なシナリオを持っています。モデル名を文字列として取得していますので、使用したい場合はどうすればインポートクラスの部分を管理できますか?何か案は?Yii 2.文字列のモデルを使用する

私が試してみました:「クラス 『組織』が見つかりません」が、私はちょうどテストするために、手動でクラスをインポートしたが、それでもエラーしている:

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

は、今私が得ます。

use app\models\Organization; 

EDIT:私はいくつかの睡眠が必要だと思います。コメントの助けを借りて、ここでのコードは、これらのようになります。

$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; 2つ目のバックスラッシュをエスケープする必要があることを覚えておいてください。 – Eduardo

+0

あなたは大歓迎です。 –

関連する問題