所以我一直在阅读大量的 stackoverflow 和 phalcon 论坛主题。(我开始讨厌这个框架),但似乎没有任何效果,也不能解释为什么像 Laravel 那样做。
我只是想能够使用这个应用程序结构进行操作:
如您所见,我想要的只是在子文件夹中使用命名空间控制器来为我的代码创建更多顺序。
根据所有解释,这是我的 loader.php:
<?php
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir,
$config->application->pluginsDir
)
)->register();
AFAIK,当通过 registerDirs 使用时,Phalcon 应该遍历所有子文件夹以查找未找到的类。
然后我在基目录中索引控制器的主路由之后定义我到特定控制器的路由:
<?php
$router = new Phalcon\Mvc\Router(false);
$router->add('/:controller/:action/:params', array(
'namespace' => 'App\Controllers',
'controller' => 1,
'action' => 2,
'params' => 3,
));
$router->add('/:controller', array(
'namespace' => 'App\Controllers',
'controller' => 1
));
$router->add('/soccer/soccer/:controller', array(
'namespace' => 'App\Controllers\Soccer',
'controller' => 1
));
$router->add('/soccer/:controller/:action/:params', array(
'namespace' => 'App\Controllers\Soccer',
'controller' => 1,
'action' => 2,
'params' => 3
));
return $router;
我的一个控制器看起来像:
<?php namespace App\Controllers\Soccer;
use App\Controllers\ControllerBase as ControllerBase;
class IndexController extends ControllerBase
{
public function indexAction()
{
}
}
这里有什么问题?默认顶级命名空间未注册?我错过了什么吗?
这只是行不通。当我尝试打开我希望转到 app/controllers/soccer/IndexController.php 的 myserver.com/soccer 时,它却告诉我:
无法加载 SoccerController 处理程序类
这基本上意味着它在 /controllers 目录中寻找 SoccerController.php 并且完全忽略了我的子文件夹定义和路由。
法尔康 1.3.0
坚持了一周。任何帮助 - 非常感谢。