繁体   English   中英

yii2 在控制器中获取模型

[英]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\\modelspublic_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM