2012-12-06 143 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(); 
     } 

回答