首页 > 解决方案 > Phalcon 4 文档控制器处理程序问题

问题描述

我在 Windows 10 上使用 Phalcon 4.0.6,x64bit 与 psr & php 版本是 7.4.7。我遵循“ https://docs.phalcon.io/4.0/en/tutorial-basic ”中的基本教程示例,但出现类似错误:“异常:无法加载 SingleController 处理程序类”。是 phalcons 问题还是我做错了什么?

文件结构: 在此处输入图像描述

[引导程序]

<?php

use Phalcon\Loader;
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\View;
use Phalcon\Mvc\Application;
use Phalcon\Url;

// Define some absolute path constants to aid in locating resources
define('BASE_PATH', dirname(__DIR__));
define('APP_PATH', BASE_PATH . '/app');

// Register an autoloader
$loader = new Loader();

$loader->registerDirs(
    [
        APP_PATH . '/controllers/',
        APP_PATH . '/models/',
    ]
);

$loader->register();

$container = new FactoryDefault();

$container->set('view',function () {
        $view = new View();
        $view->setViewsDir(APP_PATH . '/views/');
        return $view;
    }
);

$container->set('url',function () {
        $url = new Url();
        $url->setBaseUri('/');
        return $url;
    }
);

$application = new Application($container);

try {
    // Handle the request
    $response = $application->handle($_SERVER["REQUEST_URI"]);
    $response->send();
} catch (\Exception $e) {
    echo 'Exception: ', $e->getMessage();
}

[索引控制器]

<?php

use Phalcon\Mvc\Controller;

class IndexController extends Controller
{

    public function indexAction()
    {
        return '<h1>Hello</h1>';
    }
}

标签: phpphalconphalcon-routingphalcon-devtools

解决方案


问题是因为项目不在根文件夹中

这个问题的最佳解决方案是反转您之前所做的每项更改(通过阅读一些评论来判断),这建议httpd.conf不建议进行编辑,主要是因为它与将文件夹的内容移动到相同singlehtdocs/这将使您的服务器卡在一个项目

现在简单的解决方案:

编辑single/public/index.php

更改$_SERVER['REQUEST_URI']$_GET['_url'] ?? '/'

像这样:

echo $application->handle($_GET['_url'] ?? '/')->getContent();

推荐阅读