如何从Cakephp中的webroot文件调用Controller函数?

时间:2015-03-26 07:38:31

标签: 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。 在此文件中,我想调用testfn函数。 请告诉我"我该怎么做?"

4 个答案:

答案 0 :(得分:2)

这没有多大意义。使用框架,因为它打算用来代替做奇怪的事情。做博客教程。这听起来并不像你了解如何使用它的基本知识。

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

答案 1 :(得分:1)

如果你真的想这样做,请使用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);

但是如上所述,我不明白,你为什么要这样做呢。你想创建一些网络服务或什么?如果是这样,CakePHP有很好的工具:http://book.cakephp.org/2.0/en/development/rest.html

答案 2 :(得分:1)

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

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');

答案 3 :(得分:0)

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

尝试进行请求并查看答案:cakephp requestAction method View file

$blogs = $this->requestAction('/blogs/index');
echo $blogs;
//or
var_dump($blogs);

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