我建立了一個用戶創建頁面(控制器/模塊:用戶),其具有用戶界面控件(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();
}