我建立了一个用户创建页面(控制器/模块:用户),其具有用户界面控件(DOJO filterselectbox
,username
,等等)。 UI控件逐渐加入部署模块(模块名称/控制器)myService
,并采取行动populatelist()
一个Json
服务。Zend框架2 JSON,默认路由
populatelist
将数据作为Json
返回给客户端,客户端dojo ui元素将其用作内存存储。
我有2个模块,User
和myService
。对于User
模块,我已经安装的默认页面register
和register.phtml为如下。我添加了用户输入验证和数据发布的逻辑。
模块的module.config.php
:用户
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'register',
),
JSON是登记在模块myService
。 register.phtml进行调用,如:
myservice = new dojo.rpc.JsonService("myService/populatelist");
var dojoDeferredObject=myservice.getCategoryList();
//comment: getCtegoryList is actual method of remote object which returns the json data
当我打开网址为http://localhost/user
,任何参考myService
JSONRPC呼叫工作完全正常:它解析JSON呼叫作为http://localhost/myService/populatelist
和我得到的我需要的数据。
当我访问的URL为http://localhost/user/register
,事情会失败,404页找不到例外,每Json的RPC调用。原因是RPC调用正在进行不存在的路径,即http://localhost/user/myService/populatelist
而不是http://localhost/myService/populatelist
。
带我已经错过了这是造成这个问题的配置。我不想硬编码Json服务模块的路径myService
。
我相信问题是这一行:
$server->setTarget('myService/populatelist');
在下面的代码
,用于建立JSON的服务。这加起来就是不存在的路径。但我不确定如何控制它,因为我需要Json服务的单独模块。
$class = "MOCAPI\Model\MOCGuest";
$server = new Server();
$server->setClass($class);
//echo $_SERVER['REQUEST_METHOD'];
if ('GET' == $_SERVER['REQUEST_METHOD']) {
$server->setTarget('myService/populatelist')
->setEnvelope(Smd::ENV_JSONRPC_2);
$smd = $server->getServiceMap();
// Set Dojo compatibility:
$smd->setDojoCompatible(true);
header('Content-Type: application/json');
echo $smd;
return $this->getResponse();
} else {
//$server->handle();
}