【问题标题】:Phalcon 4.0 PHP - Controller handler class cannot be loadedPhalcon 4.0 PHP - 无法加载控制器处理程序类
【发布时间】:2021-06-07 16:48:39
【问题描述】:

我正在尝试在本地使用 Phalcon 创建一个基本应用程序。我按照文档(https://docs.phalcon.io/4.0/en/tutorial-basic)创建了相同的文件结构,并复制了所有文件的代码。不幸的是,每次都会显示错误消息“无法加载控制器处理程序类”。由于我在 Windows 10 x64 中工作,因此我尝试更改文件路径,但这并没有解决我的问题。 public 文件夹中的 index.php 在 /app/controllers 文件夹下找不到控制器类。我在想我的 Phalcon 安装是否有任何问题,但在 phpinfo 中我可以看到 Phalcon 插件。 phpinfo-phalcon

我在public文件夹下index.php文件中的代码是:

<?php

use Phalcon\Di\FactoryDefault;
use Phalcon\Loader;
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();
}

以及我在 app/controllers 文件夹下的 IndexController.php 文件的代码:

<?php

use Phalcon\Mvc\Controller;

class IndexController extends Controller
{
    public function indexAction()
    {
        return '<h1>Hello!</h1>';
    }
}

最后,我将 .htrouting 文件添加到与 app 和 public 文件夹相同的级别,其中包括:

<?php

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

if ($uri !== '/' && file_exists(__DIR__ . '/public' . $uri)) {
    return false;
}

$_GET['_url'] = $_SERVER['REQUEST_URI'];

require_once __DIR__ . '/public/index.php';

此处显示文件结构:file structure

如果有任何帮助,我将不胜感激,谢谢。我将 WAMP 与 PHP 7.3.21、Apache 2.4.46 和 Phalcon 插件 phalcon_x64_vc15_php7.4 一起使用

【问题讨论】:

  • 对不起,我使用的 Phalcon 插件是 phalcon_x64_vc15_php7.3_4.1.2+5275

标签: php model-view-controller phalcon phalcon-routing


【解决方案1】:

我找到了解决这个问题的方法。所以,我在公共文件夹中的 index.php 中更改了下面的部分

try {
    // Handle the request
    $response = $application->handle(
        $_SERVER["REQUEST_URI"]
    );

到这里

try {
    // Handle the request
    $response = $application->handle(
        $_GET['_url'] ?? '/'
    );

答案在phalcon论坛https://forum.phalcon.io/discussion/20291/phalcon-4-new-project-error#C62007找到了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2016-06-15
    • 2018-03-08
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多