在Application目录外调用CodeIgniter的Controller方法

时间:2012-09-04 05:55:58

标签: codeigniter

我有一个目录“Store”,它位于CodeIgniter的Application目录之外。这里 我需要从“Store”目录中调用一个控制器方法。

是否可以从Application Directory外的目录调用控制器方法?

感谢。

1 个答案:

答案 0 :(得分:1)

据我所知,使用$this->load(Loader类即),你不能。即使你直接包括以下方式:

应用/控制器/ test.php的

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require('/absolute/path/to/dummy.php');

class Test extends CI_Controller {
    public function handle(){
        $d = new Dummy();
        $d->handle();
    }
}

dummy.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Dummy extends CI_Controller {
    public function handle(){
        // do something here
    }
}

它(包括)将不起作用,因为您明确禁止直接访问!但是,如果您不禁止,那么,您的控制器代码很容易被利用,你不会有问题


因此,如果另一个codeigniter项目的另一个控制器部分是使用命令行,那么这样做的一种方法。

dummy.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access 

class Test extends CI_Controller {
    public function handle(){
        $d = new Dummy();
        $d->handle();
    }
}

应用/控制器/ test.php的

public function handle(){
    exec("cd /absolute/path/to/dummyproject; php index.php dummy handle;");
}

您还可以进一步了解如何传递命令行参数。