我正试图实现phalcon多模块与命名空间。正常工作。但是模型没有从它的位置(/apps/models/)加载。如果我将所有模型文件粘贴到控制器目录中,那么它就可以工作了。它应该从models dir加载。我怎样才能解决这个问题呢?
(前面模块)$loader->registerNamespaces(
array(
'Multiple'Frontend'Controllers' => '../apps/frontend/controllers/',
'Multiple'Frontend'Models' => '../apps/frontend/models/',
));
(博客模型)namespace Multiple'Frontend'Controllers;
use Phalcon'Mvc'Model;
class Blogs extends Model{}
我也尝试了"namespace Multiple'Frontend'Models;"但没有成功。出现如下错误:
Fatal error: Uncaught Error: Class 'Multiple'Frontend'Controllers'News' not found in C:'xampp'htdocs'pm'apps'frontend'controllers'IndexController.php:38 Stack trace: #0 [internal function]:
我的调度员如下:
public function registerServices(DiInterface $di)
{
# Registering a dispatcher
$di->set('dispatcher', function () {
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace("Multiple'Frontend'Controllers");
return $dispatcher;
});
我认为错误:"错误:类'多个'前端'控制器'博客'未找到"为此原因默认命名空间是前端'控制器。如何解决?请
您显然需要在模块外部加载您的模型。registerNamespaces只有在dispatcher命中该模块时才会在该模块中命中。
实际上我认为你在不同的模块中使用模型有问题。如果你有这个错误Multiple'Frontend'Controllers'News
,这不能找到,这意味着你只是没有正确的使用声明,它正在寻找类在相同的命名空间,只是添加use Multiple'Frontend'Models'News
。你在用IDE吗?
我认为你需要在你的控制器中添加一个额外的行,如…
namespace Multiple'Frontend'Controllers;
use Phalcon'Mvc'Controller;
use Multiple'Frontend'Models'Blogs as Blogs; //** This line should Add **//
class IndexController extends Controller
{
public function indexAction()
{}
}