首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型不在phalcon多模块上加载

模型不在phalcon多模块上加载
EN

Stack Overflow用户
提问于 2016-08-13 13:50:57
回答 2查看 894关注 0票数 0

我正在尝试使用命名空间实现phalcon多模块。正常情况下,它是有效的。但模型不能从其位置(/apps/model/)加载。如果我将我所有的模型文件粘贴到控制器目录中,那么它就可以工作了。它应该从models目录中加载。我怎么才能解决这个问题呢?

前端模块

代码语言:javascript
复制
$loader->registerNamespaces(
array(
'Multiple\Frontend\Controllers' => '../apps/frontend/controllers/',
'Multiple\Frontend\Models'      => '../apps/frontend/models/',
 ));

博客模型

代码语言:javascript
复制
namespace Multiple\Frontend\Controllers;
use Phalcon\Mvc\Model;
class Blogs extends Model{}    

我还尝试了“命名空间多个\前端\模型;”,但没有成功。得到类似以下的错误:

代码语言:javascript
复制
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]:

我的调度员是这样的:

代码语言:javascript
复制
public function registerServices(DiInterface $di)
{
    # Registering a dispatcher
    $di->set('dispatcher', function () {
        $dispatcher = new Dispatcher();
        $dispatcher->setDefaultNamespace("Multiple\Frontend\Controllers");
        return $dispatcher;
});

我认为错误是:" error : Class 'Multiple\Frontend\Controllers\Blogs‘not found“,这是因为默认的命名空间是前端\控制器。如何解决?请

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-13 21:13:03

我认为你需要在你的控制器中添加额外的一行,比如...

代码语言:javascript
复制
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()
{}
}
票数 0
EN

Stack Overflow用户

发布于 2016-08-13 17:46:43

你需要在模块之外加载你的模型。只有当调度程序命中此模块时,才会命中此模块中的registerNamespaces。

实际上,我认为在不同的模块中使用模型是有问题的。如果你有这个错误,这不能被找到,这意味着你没有正确的Multiple\Frontend\Controllers\News语句,它在相同的名称空间中寻找类,只需添加use Multiple\Frontend\Models\News。你还在使用IDE吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38929691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档