【问题标题】:How to use models from models/ in layouts/main.php in yii 2.0 (basic template)如何在 yii 2.0(基本模板)中使用模型/布局/main.php 中的模型
【发布时间】:2015-08-19 14:55:44
【问题描述】:

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

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

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

  1. 我已经阅读了有关创建小部件的信息,因此我可以在此链接的“main.php”中使用它 - Yii - how to retrieve model data into a layout page?,但这并没有提供我的 Yii 版本,因为我找不到受保护的文件夹等。所以我有点困惑。
  2. 还阅读了一些其他解决方案,但它们也没有帮助我。

你会建议我做什么?因为我目前对解决方案一无所知。我是这个框架的新手,所以,不要评判我:)

更新:[解决方案]

// 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

【问题讨论】:

    标签: yii frameworks


    【解决方案1】:

    这里是交易 - 视图实际上只是一个“视图”。视图应该只代表一些数据,而不是对这些数据做任何事情。您不想在视图中有任何逻辑。

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

    控制器看起来像:

    $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 布局文件的开头。另请查看“布局”部分here.

    【讨论】:

    • 这不是我要问的。我知道这一点并查看文件。我特别询问 views/layouts/main.php 以及如何从 models/ 文件夹中的类中获取函数。例如,我想检查用户是否使用我自己的功能登录。我将如何从类 LoginForm 调用公共函数(class LoginForm extends Model)。 LoginForm::isUserLoggedIn() - 这不起作用,其他建议是什么?
    • Bfcm,也就是说我导入之后,就可以使用LoginForm::isUserLoggedIn()这样的函数了?是最好的做法还是有更好的方法?因为我不想学坏方法:)
    • 还有另一种使用命名空间的可能性。阅读“Yii2 中的命名空间”。也可能发生,Yii::import() 在 Yii2 中不起作用,因为我使用的是 Yii1,但它应该。
    • 解决了。感谢您的帮助!
    • 很高兴为您提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多