我试图用命名空间实现phalcon multi模块。通常它的工作。但模型没有从其位置加载(/ apps / models /)。如果我将所有模型文件粘贴到控制器目录中,那么它的工作原理。它应该从模型目录加载。我怎么能解决这个问题。
[前面模块]
$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{}
我也尝试命名空间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;
});
我认为错误:"错误:Class' Multiple \ Frontend \ Controllers \ Blogs'找不到"因为这个原因默认命名空间是frontend \ controller。怎么解决?请
答案 0 :(得分:2)
您需要在模块之外加载模型。当调度程序将此模块命中时,registerNamespaces仅在此模块中命中。
实际上我认为在不同模块中使用模型时遇到问题。如果您发现此错误Multiple\Frontend\Controllers\News
,则无法找到它,这意味着您没有正确的使用语句,而是在相同的命名空间中查找类,只需添加use Multiple\Frontend\Models\News
即可。你甚至使用任何IDE吗?