Phalcon多个模块不起作用

时间:2016-03-28 17:38:22

标签: php phalcon

我想使用多个模块。因此,我通过phalcon命令frontendbackend模块创建。要使用此命令phalcon module frontend,我必须在config.php

中写一行
'modulesDir'     => APP_PATH . '/app/modules/',

使用此命令后,我开始关注phalcon docs - 根据此文档,我必须通过添加此代码来注册新模块:(我把它放在index.php

$application->registerModules(
      array(
        'frontend' => function ($di) use ($view) {
          $di->setShared('view', function () use ($view) {
            $view->setViewsDir('../apps/frontend/views/');
            return $view;
          });
        },
        'backend' => function ($di) use ($view) {
          $di->setShared('view', function () use ($view) {
            $view->setViewsDir('../apps/backend/views/');
            return $view;
          });
        }
    )
);

完成此操作后,我将routes更新为默认模块 - frontend

最后,我收到此通知:

IndexController handler class cannot be loaded

在索引控制器中,我放了namespace Application\Frontend\Controllers;

我应该修复或改进哪些方法才能正常工作? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

看起来您需要更新默认路由。 看看这段代码:

$di->set('router', function () {

    $router = new Router(false);
    $router->setUriSource(\Phalcon\Mvc\Router::URI_SOURCE_SERVER_REQUEST_URI);
    $router->removeExtraSlashes(true);

    $router->setDefaultModule('frontend');

    /**
     * Default routes
     */
    $router->add('/:module/:controller/:action/:params', [
        'module' => 1,
        'controller' => 2,
        'action' => 3,
        'params' => 4
    ]);
    $router->add('/:module/:controller', [
        'module' => 1,
        'controller' => 2,
        'action' => 'index'
    ]);
    $router->add('/:module', [
        'module' => 1,
        'controller' => 'index',
        'action' => 'index'
    ]);
    $router->add('/', [
        'action' => 'index',
        'controller' => 'index'
    ]);
});

同时检查你的装载机:

$loader->registerNamespaces(array(
    'Application\Modules' => $config->app->modulesDir,
));

我认为,你的控制器命名空间应该是:

namespace Application\Modules\Frontend\Controllers;