[英]yii2 get model in controller
我在那里有一个 yii2 项目和控制器 MyModelController.php,我想在那里获取模型
namespace app\controllers;
use yii\web\Controller;
use yii\db\Command;
class MyModelController extends Controller
{
public function actionPhoto()
{
$model=new myModel;
return $this->render('photo', ['model' => $model]);
}
}
和模型
MyModel.php:
use namespace app\models;
use yii\base\Model;
class MyModel extends ActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'my_model';
}
public function rules()
{
... some rules
}
public function relations()
{
return array(
);
}
//like fields in my table in mysql
public function attributeLabels()
{
return array(
'id' => 'ID',
'my_model_atribute' => 'MyModel',
);
}
public function search()
{
... some search
}
}
它们分别位于/basic/models
和/basic/controllers
。
当我在我看来调用它时,我得到了这个错误:
Class 'app\controllers\MyModel' not found
UPD1我试图让它在视图photo.php
use yii\helpers\Html;
$model=new MyModel;
var_dump($model);
而且我仍然给出未找到该类的错误。 UPD2我将命名空间更改为basic\\models
和public_html\\basic\\models
因为它实际上是,但它仍然没有在那里找到类/
您必须先使用模型。
use yii\helpers\Html;
use basic\models\Mymodel
$model=new MyModel;
var_dump($model);
或者
use yii\helpers\Html;
$model=new \basic\models\MyModel;
var_dump($model);
namespace basic\controllers;
use yii\web\Controller;
use yii\db\Command;
class MyModelController extends Controller
{
public function actionPhoto()
{
$model=new myModel;
return $this->render('photo', ['model' => $model]);
}
}
MyModel.php:使用命名空间 basic\\models;
use yii\base\Model;
class Model extends ActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'my_model';
}
public function rules()
{
... some rules
}
public function relations()
{
return array(
);
}
//like fields in my table in mysql
public function attributeLabels()
{
return array(
'id' => 'ID',
'my_model_atribute' => 'MyModel',
);
}
public function search()
{
... some search
}
}
如果您的代码是
app\controllers\MyModel
因为您的模型 ( MyModel ) 位于文件夹 /models/MyModel.php 并且具有命名空间 app\\models
所以你必须打电话给
use app\models\MyModel;
并声明它
$model = new MyModel();
像这样
namespace app\controllers;
use yii\web\Controller;
use yii\db\Command;
// this to call your models with namespace
use app\models\MyModel;
class MyModelController extends Controller
{
public function actionPhoto()
{
// this to declare your model
$model = new myModel();
return $this->render('photo', ['model' => $model]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.