【问题标题】:Call Controller method of CodeIgniter outside Application directory在Application目录外调用CodeIgniter的Controller方法
【发布时间】:2012-08-28 18:17:32
【问题描述】:

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

是否可以从应用程序目录之外的目录调用控制器方法?

谢谢。

【问题讨论】:

  • 为什么在应用目录之外?为什么不直接将控制器移动到正常位置?

标签: codeigniter


【解决方案1】:

据我所知,使用$this->load(即加载程序类),你不能。即使您通过以下方式直接包含like:

应用程序/控制器/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;");
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2018-06-22
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2019-10-08
    相关资源
    最近更新 更多