首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Yii框架之外的外部PHP控制器中使用Yii1.x模型函数

在Yii框架之外的外部PHP控制器中使用Yii1.x模型函数
EN

Stack Overflow用户
提问于 2020-01-10 22:05:32
回答 1查看 251关注 0票数 1

我在一个Yii1旧网站上工作。它与一些外部PHP控制器链接在一起。这些外部控制器提供了一些在两个不同应用程序之间使用的通用功能。我在Yii模型中有一个函数,我想在一个外部PHP控制器中使用,有什么方法可以做到这一点吗?目前,这是通过在PHP外部控制器中重写MySQL查询来完成的,但我不想效仿这种蹩脚的做法。

我找到了这个链接,我可以从外部访问Yii,但它仍然没有太大帮助。Using Yii in 3rd-Party Systems

下面是我的代码示例:

代码语言:javascript
运行
复制
namespace main\Helpers;

require_once('path/to/yii.php');


Class HelperClass {
 public static function yiisupport($id){
 //   I am able to access Yii variables using
     \Yii::app()->name
 // But how to access the yii model or controller functions? I need something like the follwoing
  $model =  \Yii::app()->YiiModel::model()->findByPK($id);
 }
}

有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-11 19:04:28

您需要首先创建Yii应用程序(使用配置文件路径),以访问documentation中提到的模型和控制器。然后,您可以访问外部应用程序中的任何模型类,就像在Yii应用程序中访问它一样,并且可以使用控制器操作,如下所示;

代码语言:javascript
运行
复制
$controller = new \YOURController('ACTION_NAME');
$controller->ACTION_NAME();

如果你已经在你的配置文件中导入了模型/控制器,那么你将不需要导入任何类,但是如果你还没有,那么你可以像下面这样导入特定的模型/控制器;

代码语言:javascript
运行
复制
\Yii::import('application.models.MODEL_NAME');
\Yii::import('application.controllers.CONTROLLER_NAME');

检查下面的示例;

代码语言:javascript
运行
复制
namespace main\Helpers;

require_once('path/to/yii.php');
\Yii::createWebApplication('path/to/config.php');

Class HelperClass {
    public static function yiisupport($id){
        // Access Yii variables
        \Yii::app()->name;

        // Access yii model
        $model = \YiiModel::model()->findByPK($id);

        // Access yii controller and its actions
        $controller = new \YiiController('actionCreate');
        $controller->actionCreate();
    }
}

更新:

正如@robo006在下面的评论中提到的,在yii应用程序之外调用Yii控制器操作是一个坏主意,但是如果你仍然想这样做,有一种更安全的方式遵循Yii应用程序的生命周期,这种方式将触发访问过滤器和beforeAction()。所以你可以用更安全的方式调用控制器动作,如下所示;

代码语言:javascript
运行
复制
\Yii::app()->runController('route/to/action');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59683314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档