2012-12-06 198 views
3

我建立了一個用戶創建頁面(控制器/模塊:用戶),其具有用戶界面控件(DOJO filterselectboxusername,等等)。 UI控件逐漸加入部署模塊(模塊名稱/控制器)myService,並採取行動populatelist()一個Json服務。Zend框架2 JSON,默認路由

populatelist將數據作爲Json返回給客戶端,客戶端dojo ui元素將其用作內存存儲。

我有2個模塊,UsermyService。對於User模塊,我已經安裝的默認頁面registerregister.phtml爲如下。我添加了用戶輸入驗證和數據發佈的邏輯。

模塊的module.config.php用戶

'defaults' => array(
        'controller' => 'User\Controller\User', 
        'action'  => 'register', 
        ), 

JSON是登記在模塊myServiceregister.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(); 
     } 

回答