如何在yii 2.0(基本模板)中使用models / layouts / main.php中的模型

时间:2015-08-19 14:55:44

标签: yii frameworks

我前几天开始学习Yii框架,我想出了这个问题。

我已经下载了基本的应用程序模板(以便您了解我的应用程序的结构)。

我想在“views / layouts / main.php”中使用“models /”中的一个类函数,但是,我不确定如何从“main.php”访问它们。我在互联网上搜索,没有一个解决方案帮助过我。

  1. 我已经阅读了有关创建小部件的内容,因此我可以在此链接中的“main.php”中使用它 - Yii - how to retrieve model data into a layout page?,但这不提供我的Yii版本,因为我找不到受保护的文件夹等所以我有点困惑。
  2. 还阅读了其他一些解决方案,但他们也没有帮助我。
  3. 你建议我做什么?因为我目前对解决方案一无所知。我是这个框架中的新手,所以,不要难以评判我:)

    更新:[解决方案]

    // use statement on top of main.php like the other use statements
    use app\models\Modelname; 
    
    // anywhere in the file
    .... 
    $myModel = new Modelname; 
    $myModel->myFunction();
    ... 
    
    // Or if it is a static function: 
    Modelname::myFunction();
    

    这是从文件夹 models / 访问模型文件(类)的方法,例如 views / layouts / main.php

1 个答案:

答案 0 :(得分:1)

这是交易 - 视图实际上只是一个"视图"。 View应该只代表一些数据,但不能对这些数据做些什么。你不想在视图中有任何逻辑。

无论如何,如果你想从你的模型中展示一些东西 - 你应该通过控制器传递这个模型,它会呈现你的视图。

控制器将如下所示:

$model = new Device;
$this->render('index', array(
    'model' => $model
));

然后你可以在视图中使用它,通常是从模型中获取一些数据。

您也可以直接在视图中获取它,但这不是一个好习惯。

Here您可以阅读一些关于模型和最佳实践的基础知识,如何使用它们。

更新[Yii 1.x]
要在main.php中专门使用Model-Class,请在要使用它的位置导入它:

     Yii::import('application.models.LoginForm');

之后,您通常可以使用模型类中的函数。

更新2
Yii2中的命名空间:

use yii\models\LoginForm;

在main.php布局文件的开头。另请参阅" Layouts"部分here.