我正在构建一个用户创建页面(控制器/模块:用户),它具有 UI 控件(DOJOfilterselectbox
等username
)。UI 控件填充了Json
部署为 module (module name/controller)myService
和 action的服务populatelist()
。
populatelist
将数据返回Json
给客户端,客户端 dojo ui 元素将其用作内存存储。
我有 2 个模块,User
并且myService
. 对于User
模块,我register
在register.phtml中设置了默认页面,如下所示。我为用户输入验证和数据发布添加了逻辑。
module.config.php
模块:用户
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'register',
),
Json 在 module 中注册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
当我打开 url as时,对JSONRPC 调用的http://localhost/user
任何引用都可以正常工作:它将 JSON 调用解析为 as并且我得到了我需要的数据。myService
http://localhost/myService/populatelist
当我http://localhost/user/register
以. 原因是,RPC 调用正在一个不存在的路径上进行,即而不是.http://localhost/user/myService/populatelist
http://localhost/myService/populatelist
在某处我错过了导致此问题的配置。我不想硬编码 Json service Module 的路径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();
}