Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PhalconPHP-如果控制器与加载程序同名,则无法加载控制器_Php_Phalcon - Fatal编程技术网

PhalconPHP-如果控制器与加载程序同名,则无法加载控制器

PhalconPHP-如果控制器与加载程序同名,则无法加载控制器,php,phalcon,Php,Phalcon,在我命名我的应用程序(测试应用程序)之前,一切正常。 但在我开始命名控制器和所有东西并加载名称空间后,如下所示: $loader = new Loader(); $loader->registerNamespaces( array( 'Application\Controllers' => 'Application/Controllers/' ) )->register(); 我得到错误异常:无法

在我命名我的应用程序(测试应用程序)之前,一切正常。 但在我开始命名控制器和所有东西并加载名称空间后,如下所示:

    $loader = new Loader();
    $loader->registerNamespaces(
        array(
            'Application\Controllers' => 'Application/Controllers/'
        )
    )->register();
我得到错误
异常:无法加载IndexController处理程序类

我输入的命名空间是正确的:

namespace Application\Controllers;

use Phalcon\Mvc\Controller;

class IndexController extends Controller {

    public function indexAction() {
        echo "Hello World";
    }
}

(来源:)

我通过向路由器添加默认名称空间来修复它:

$router = new Router();
$router->setDefaultNamespace('Application\Controllers');
但这可能会给我带来更多的问题,因为名称空间加载器似乎无法工作


怎么了?

我认为您只需设置名称空间的根,然后加载程序将执行脚手架:

$loader = new Loader();
$loader->registerNamespaces(
    array(
        'Application' => 'Application'
    )
)->register();
你确定你得到的应用程序文件夹是正确的吗?尝试:

$loader = new Loader();
$loader->registerNamespaces(
    array(
        'Application' => '~/Application/'
    )
)->register();

没有问题,加载程序和路由器中的名称空间注册都是必需的步骤

首先,您只配置了加载程序。所以如果你在某处测试:

$controller=new Application\Controllers\IndexController()
它会起作用的


但是,您还没有告诉路由器所有路由都应该指向
Application\Controllers
名称空间。因此,它试图找到确实不存在的
\IndexController
类。

是的,该文件夹是正确的,因为如果我从控制器中删除名称空间,它就会工作。