filterselectbox
UI コントロール (DOJOなど)を持つユーザー作成ページ (コントローラー/モジュール: ユーザー) を構築していますusername
。UI コントロールにはJson
、 module (module name/controller)myService
および actionとしてデプロイされたサービスが取り込まれますpopulatelist()
。
populatelist
クライアントに対してデータを返しJson
、クライアント Dojo UI 要素はそれをメモリ ストアとして使用します。
私は2つのモジュールを持っていUser
ますmyService
. User
モジュールの場合、以下に示すように、デフォルトのページを register.phtml としてregister
セットアップしました。ユーザー入力の検証とデータ投稿のロジックを追加しました。
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
として URL にアクセスすると、 Json RPC 呼び出しごとに404 ページが見つからないという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();
}