繁体   English   中英

Phalcon 4.0 PHP - Controller 处理程序 class 无法加载

[英]Phalcon 4.0 PHP - Controller handler class cannot be loaded

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

文件结构在这里显示:文件结构

我将不胜感激任何帮助,谢谢。 我正在使用带有 PHP 7.3.21、Apache 2.4.46 和 Phalcon 插件 phalcon_x64_vc15_php7.4 的 WAMP

我找到了解决这个问题的方法。 因此,我更改了公共文件夹内 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中找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM