如何在Cakephp中从webroot文件调用控制器函数?

如何在Cakephp中从webroot文件调用控制器函数?,cakephp,Cakephp,我想从webroot文件调用控制器函数 我有一个控制器 class AbsController extends AppController { function testfn($type){ if($type>1) return 'Value is greater than one'; else return 'Value is less than one'; } } 文件路径为app/webroot/number.php。 在

我想从webroot文件调用控制器函数 我有一个控制器

 class AbsController extends AppController {
     function testfn($type){
        if($type>1) return 'Value is greater than one';
        else return 'Value is less than one';  
    } 
 }
文件路径为app/webroot/number.php。 在这个文件中,我想调用
testfn
函数。
请告诉我“我该怎么做?”

这没有多大意义。按照预期使用框架,而不是做奇怪的事情。做博客教程。这听起来不像你了解如何使用它的基本知识


如果你坚持做坏事和架构,看看CakePHP文件:index.php。您可能必须复制框架的完整引导过程,才能在其他地方正确实例化控制器并使其正常工作。还要检查框架调度器的代码。这就是控制器被实例化的地方。

这没有多大意义。按照预期使用框架,而不是做奇怪的事情。做博客教程。这听起来不像你了解如何使用它的基本知识


如果你坚持做坏事和架构,看看CakePHP文件:index.php。您可能必须复制框架的完整引导过程,才能在其他地方正确实例化控制器并使其正常工作。还要检查框架调度器的代码。这就是控制器实例化的地方。

如果您确实想这样做,请使用curl:

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "http://localhost/app/abs/testfn/1"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch);  
    curl_close($ch);

但正如我所说,我不明白,你为什么要这么做。你是在尝试创建Web服务还是什么?如果是这样,CakePHP有很好的工具:

如果您真的想这样做,请使用curl:

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "http://localhost/app/abs/testfn/1"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch);  
    curl_close($ch);

但正如我所说,我不明白,你为什么要这么做。你是在尝试创建Web服务还是什么?如果是这样,CakePHP有很好的工具:

您可以从视图文件中调用requestaction

尝试执行requestaction并检查答案:


在webroot文件中,您可以使fetch元素包含视图文件。

您可以从视图文件中调用requestaction

尝试执行requestaction并检查答案:


在webroot文件中,您可以使fetch元素包含视图文件。

为了在webroot文件中使用控制器功能,您需要首先在number.php中加载cakephp引导文件

if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT')) {
define('ROOT', dirname(dirname(dirname(__FILE__))));
}
if (!defined('APP_DIR')) {
define('APP_DIR', basename(dirname(dirname(__FILE__))));
}
if (!defined('WEBROOT_DIR')) {
define('WEBROOT_DIR', basename(dirname(__FILE__)));
}
if (!defined('WWW_ROOT')) {
define('WWW_ROOT', dirname(__FILE__) . DS);
}
require_once('yourlocalpath/cakephp/lib/Cake/bootstrap.php');
require_once('yourlocalpath/cakephp/app/Controller/AbsController.php');
$user = new AbsController();
$user->testfn('2');

为了在webroot文件中使用控制器函数,您需要首先在number.php中加载cakephp引导文件

if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT')) {
define('ROOT', dirname(dirname(dirname(__FILE__))));
}
if (!defined('APP_DIR')) {
define('APP_DIR', basename(dirname(dirname(__FILE__))));
}
if (!defined('WEBROOT_DIR')) {
define('WEBROOT_DIR', basename(dirname(__FILE__)));
}
if (!defined('WWW_ROOT')) {
define('WWW_ROOT', dirname(__FILE__) . DS);
}
require_once('yourlocalpath/cakephp/lib/Cake/bootstrap.php');
require_once('yourlocalpath/cakephp/app/Controller/AbsController.php');
$user = new AbsController();
$user->testfn('2');

这行不通:他不想从框架范围和边界内调用控制器方法,而是想直接从“断开连接”的php调用控制器方法这不起作用:他不想从框架范围和边界内调用控制器方法,而是想直接从与框架“断开”的php调用控制器方法。嗨,Sudhir很抱歉,但是您的代码在Cakephp 3Hi@NeerajRathod中不起作用。此代码适用于版本2。您必须在Cakephp 3ya sudhir中更新它,我找到了解决方案,感谢您的关注:)Hi@NeerajRathod欢迎。Hi,sudhir很抱歉,但您的代码在Cakephp 3Hi@NeerajRathod中不起作用。此代码适用于版本2。你必须在Cakephp 3ya sudhir中更新它,我找到了解决方案感谢你的关注:)嗨@NeerajRathod欢迎。嗨Burzum,是的,我知道这不是一个正确的流程。但你们知道burzum,在现实世界的问题中,你们必须做这种奇怪的事情来满足客户在时间线下的要求,谢谢你们抽出时间:)burzum这只是写糟糕代码的借口。您正在生成无法维护的代码。肯定有更好的办法来解决他的问题。你积累了糟糕的代码,直到它崩溃,因为你无法修复任何东西,而不必花上几个小时来处理它,因为你产生了一个巨大的混乱。在我做代码审查时,我已经多次看到了这一点。最糟糕的情况是,这将导致经济代码崩溃。我们有一个案例,一家印度公司估计他们自己的垃圾代码重构需要两年时间。我们在3个月内重写了整个应用程序。使用他们的代码可能需要2年的时间。我也面临同样的情况,在客户要求下,当人们调整使用新平台时,我不得不离开旧页面。不建议,但真实场景可能会出现这样的情况。嗨,Burzum,是的,我知道这不是一个合适的流程。但你们知道burzum,在现实世界的问题中,你们必须做这种奇怪的事情来满足客户在时间线下的要求,谢谢你们抽出时间:)burzum这只是写糟糕代码的借口。您正在生成无法维护的代码。肯定有更好的办法来解决他的问题。你积累了糟糕的代码,直到它崩溃,因为你无法修复任何东西,而不必花上几个小时来处理它,因为你产生了一个巨大的混乱。在我做代码审查时,我已经多次看到了这一点。最糟糕的情况是,这将导致经济代码崩溃。我们有一个案例,一家印度公司估计他们自己的垃圾代码重构需要两年时间。我们在3个月内重写了整个应用程序。使用他们的代码可能需要2年的时间。我也面临同样的情况,在客户要求下,当人们调整使用新平台时,我不得不离开旧页面。不建议这样做,但实际情况可能会出现这样的情况。