Php 未在phalcon多模块上加载模型

Php 未在phalcon多模块上加载模型,php,module,phalcon,Php,Module,Phalcon,我正在尝试用名称空间实现phalcon多模块。正常情况下,它的工作。但是没有从其位置(/apps/models/)加载模型。如果我将所有模型文件粘贴到controller dir中,则其工作正常。它应该从模型目录加载。我怎样才能解决这个问题 [前端模块] $loader->registerNamespaces( array( 'Multiple\Frontend\Controllers' => '../apps/frontend/controllers/', 'Multiple\Fr

我正在尝试用名称空间实现phalcon多模块。正常情况下,它的工作。但是没有从其位置(/apps/models/)加载模型。如果我将所有模型文件粘贴到controller 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{}    
我还尝试了“名称空间多个\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;
});

我认为错误是:“error:Class'Multiple\Frontend\Controllers\Blogs'找不到”,因为默认名称空间是Frontend\controller。如何解决?请

您需要在模块之外加载您的模型。只有当dispatcher命中此模块时,才会在此模块中命中registerNamespaces


实际上,我认为在不同的模块中使用模型会有问题。如果您有此错误
Multiple\Frontend\Controllers\News
,无法找到它,这意味着您没有正确的use语句,并且它正在相同的名称空间中查找类,只需添加
use Multiple\Frontend\Models\News
。您是否正在使用IDE?

您需要在模块之外加载模型。只有当dispatcher命中此模块时,才会在此模块中命中registerNamespaces


实际上,我认为在不同的模块中使用模型会有问题。如果您有此错误
Multiple\Frontend\Controllers\News
,无法找到它,这意味着您没有正确的use语句,并且它正在相同的名称空间中查找类,只需添加
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()
{}
}

我认为你需要在你的控制器中增加一条额外的线,比如

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()
{}
}


为什么你的博客模型被命名为控制器?在你的错误中有什么新闻,它不在你的代码样本中?我应该在博客模型中使用什么名称空间?它是“名称空间多\Frontend\Models”吗?如果是,则显示致命错误消息模型位于模型目录中,这就是此错误的原因。如果我将新闻模型复制到控制器目录,它将正常工作。我想从模型目录调用新闻模型。您是否忘记将
news
model中的名称空间更改为
Multiple\Frontend\models
?您能否确认每个模型都具有名称空间
Multiple\Frontend\models
。你能再检查一下吗?为什么你的博客模型被命名为控制器?在你的错误中有什么新闻,它不在你的代码样本中?我应该在博客模型中使用什么名称空间?它是“名称空间多\Frontend\Models”吗?如果是,则显示致命错误消息模型位于模型目录中,这就是此错误的原因。如果我将新闻模型复制到控制器目录,它将正常工作。我想从模型目录调用新闻模型。您是否忘记将
news
model中的名称空间更改为
Multiple\Frontend\models
?您能否确认每个模型都具有名称空间
Multiple\Frontend\models
。请你再检查一下这个好吗?什么叫不工作?只需在注册模块之前使用loader并加载您的模型类,这里就是一个例子,然后只需
使用Multiple\Frontend\Models\blog
或其他任何东西。它必须工作,我在我的应用程序中也这样做。正如我已经写过的,只有当调度器命中一个模块(比如路由)时,才会命中registerNamespaces——这就是为什么这个示例可以毫无问题地工作。如果您想在多个模块中使用您的模型,您需要在模块类之外的loader中注册它们。@Juri,他使用了升华文本,所以没有IDE:),所以我更新了我的答案。我想这肯定是因为他没有用处,朱丽!蒂莫西是对的,我用的是崇高的文字。看看上面的代码,我已经在应用程序$di之后为控制器和模型注册了名称空间。我在问为什么每次我都需要在控制器中添加模型?在控制器中添加模型是什么意思?这就是php的工作原理。如果类位于另一个命名空间中,则需要使用
use class
。什么是不工作?只需在注册模块之前使用loader并加载您的模型类,这里就是一个例子,然后只需
使用Multiple\Frontend\Models\blog
或其他任何东西。它必须工作,我在我的应用程序中也这样做。正如我已经写过的,只有当调度器命中一个模块(比如路由)时,才会命中registerNamespaces——这就是为什么这个示例可以毫无问题地工作。如果您想在多个模块中使用您的模型,您需要在模块类之外的loader中注册它们。@Juri,他使用了升华文本,所以没有IDE:),所以我更新了我的答案。我想这肯定是因为他没有用处,朱丽!蒂莫西是对的,我用的是崇高的文字。看看上面的代码,我已经在应用程序$di之后为控制器和模型注册了名称空间。我在问为什么每次我都需要在控制器中添加模型?在控制器中添加模型是什么意思?这就是php的工作原理。如果类位于另一个命名空间中,则需要使用
use class
。Gr8 Boss!它的工作。。。但我有一个问题,如果我使用多模块,那么我应该添加的每个控制器模型是什么?我不知道,但我只是这样解决了我的问题。再多问一个专家,像提摩太一样。塔克斯!Gr8老板!它的工作。。。但我有一个问题,如果我使用多模块,那么我应该添加的每个控制器模型是什么?我不知道,但我只是这样解决了我的问题。再多问一个专家,像提摩太一样。塔克斯!