【问题标题】:Codeigniter: call a controller from another codeigniter fileCodeigniter:从另一个 codeigniter 文件调用控制器
【发布时间】:2016-02-10 07:13:07
【问题描述】:

我有这两个文件路径:

    1: /api/math/application/controllers/test.php 
    2: /learn/mathtek/application/controllers/Auth.php

我需要从 path1(test) 的控制器中的 path2(Auth) 调用控制器。这可能吗?如果是怎么办?

我尝试使用redirect() 函数但没有用。 我也试过这个:

require_once('/learn/mathtek/application/controllers/Auth.php');
            $aObj = new a();  //create object 
            $aObj->custom_a(); //call function

但它仍然没有工作......请帮助......这里的codeigniter新手

【问题讨论】:

  • 永远不要将一个控制器包含在另一个控制器中。
  • 无法在一个 codeigniter 文件中加载另一个 codeigniter 文件。
  • 您可以根据需要创建一个控制器作为库或助手,然后调用另一个控制器。
  • @wolfgang1983 你有 HMVC 的样品吗?
  • "stackoverflow.com/questions/6500022/…" 你应该参考这个链接

标签: php codeigniter


【解决方案1】:

感谢大家的帮助。我最终使用重定向功能直接发布了路径以使其工作。

1: /api/math/application/controllers/test.php - codeigniter1
2: /learn/mathtek/application/controllers/Auth.php - codeigniter2

示例: 如果我想从路径(1)调用路径(2)。

重定向('http://localhost/learn/mathtek/auth/signin'); --'signin' 是 'auth' 控制器中的一个函数

这就是“测试”控制器中的代码。这在 codeigniter 中有效,即使它来自不同的控制器路径。

但这不适用于 UNITY(WEBGL)。这就是为什么我结束了回声并将其返回。

【讨论】:

    【解决方案2】:

    您不能调用任何其他控制器操作/方法以在您的控制器操作/方法中有输出或返回值,因为它不符合 MVC 规则。

    但是您可以从一个控制器动作重定向到另一个控制器动作,并在另一个控制器动作中传递参数,如下所示:

    redirect("CONTROLLER/ACTION/ARGUMENT1/ARGUMENT2");
    

    编辑:

    假设您在 Test 控制器和 Test 控制器的 test_method() 操作中,那么您可以将业务逻辑代码放入方法中并获得一些输出,现在您想调用任何其他控制器函数(例如:Auth)来执行对该输出的任何其他操作,然后您可以将该输出传递到重定向函数中,如下所示:

    redirect("Auth/auth_method/ARGUMENT1/ARGUMENT2");
    

    【讨论】:

    • @Caloy:如果您认为这是解决您的问题的最佳解决方案,那么您可以投票赞成我的回答并标记为最佳解决方案... :)
    猜你喜欢
    • 2011-09-23
    • 2020-07-18
    • 1970-01-01
    • 2016-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多