猿问

phalcon框架multi modules中router的问题

开发环境是win7x64/WAMPserver2.5/Phalcon-1.3.4
我现在用phalcon框架做一个小站点,内部有多个功能,但是在使用multimodules时不能识别正确的module
error_reporting(E_ALL);
classApplicationextends\Phalcon\Mvc\Application{
/**
*RegistertheservicesheretomakethemgeneralorregisterintheModuleDefinitiontomakethemmodule-specific
*/
protectedfunction_registerServices(){
$di=new\Phalcon\DI\FactoryDefault();
$loader=new\Phalcon\Loader();
/**
*We'rearegisteringasetofdirectoriestakenfromtheconfigurationfile
*/
$loader->registerDirs(
array(
__DIR__.'/../apps/library/',
)
)->register();
//Registeringarouter
$di->set('router',function(){
$router=new\Phalcon\Mvc\Router();
$router->setDefaultModule("Entrance");
$router->add('/:controller/:action',array(
'module'=>'entrance',
'controller'=>1,
'action'=>2,
));
$router->add("/functions1",array(
'module'=>'function1',
'controller'=>'index',
'action'=>'index',
));
return$router;
});
$di->set('url',function(){
$url=new\Phalcon\Mvc\Url();
$url->setBaseUri('/myproject');
return$url;
});
$this->setDI($di);
}
publicfunctionmain(){
$this->_registerServices();
//Registertheinstalledmodules
$this->registerModules(array(
'Entrance'=>array(
'className'=>'Multiple\Entrance\Module',
'path'=>'../apps/entrance/Module.php',
),
'Impellerhelper'=>array(
'className'=>'Multiple\Function1\Module',
'path'=>'../apps/Function1/Module.php',
),
));
echo$this->handle()->getContent();
}
}
$application=newApplication();
$application->main();
访问http://localhost/myproject/index/index
没有问题
但是访问http://localhost/myproject/function1/index/index
时却出现了问题,下面是xdebug的提示信息
Phalcon\Mvc\Dispatcher\Exception:Multiple\Entrance\Controllers\Function1ControllerhandlerclasscannotbeloadedinD:\ProgramFiles\wamp\www\myproject\public\index.phponline79
应该说提示信息还是挺明确的,就是没能载入一个类,或者说没能找到那个类,但是我清查了代码,确实都写对了。
而且如果采用
$router->setDefaults(array(
"namespace"=>"Multiple\Entrance",
"module"=>"entrance',
"controller"=>"index",
"action"=>"index"
));
则连默认页面都会出现找不到类的错误
我还到stackoverflow上面去查了,有人有类似问题,但是回答都是修改router或者修改baseuri之类,我都已经尝试过了,还是不行
aluckdog
浏览 460回答 2
2回答

30秒到达战场

估计比较马虎:1,检查Moudle的注册块名字和文件夹对不对应,2,大小写的问题3,php$router->add("/functions1",array('module'=>'function1','controller'=>'index','action'=>'index',));所以,对应的链接应该是http://localhost/myproject/functions1/index/index而不是:http://localhost/myproject/function1/index/index
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答