我想使用多个模块。因此,我通过phalcon命令frontend
和backend
模块创建。要使用此命令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;
我应该修复或改进哪些方法才能正常工作? 提前谢谢。
答案 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;