I think I must be missing a lot here. If anyone has any advice that would be
great. Otherwise it's back to the docs for me!


Matthew Lurz wrote:
> 
> <p>Please excuse my ignorance as I've worked very little with any RPC
> service in the past.
> 
> <p>I'm attempting to AJAJ-enable a form. I've selected a simple form
> containing 2 ValidationTextBoxes. I'm using the modular directory
> structure and the controller class in this case is Dashboard_Options and
> the action is blogAction. The Dojo view integration is working as expected
> but I must be missing something. I have created the getJsonRpcServer and
> jsonRpcAction methods in the controller as described 
> http://framework.zend.com/manual/en/zend.json.server.html here  (I
> understand that this is but 1 potential solution):
> 
> <p>Which seems to be calling the blogAction however I receive this error:
> 
> <p>"<em>Variable number of arguments is not supported for services (except
> optional parameters). Number of function arguments must currespond to
> actual number of arguments described in a docblock.</em>"
> 
> <p>Sidebar: I copied and pasted the error message. What is the procedure
> for submitting a a minor spelling mistake to the developers?
> 
> <p>I understand that the methods are to contain docblocks so that the
> JSON-RPC service knows the signature of the method but in this case there
> are no arguments to the method nor a return value. Again, I must be
> missing something but am at a loss. I believe that I need to detect and
> handle the AJAJ request differently but am unsure of what/how.
> 
> <p>Here are the methods:
> 
> <div style="font-family: monospace;" id="code-div" class="php"><ol><li
> class="li1"><div class="de1">    /**</div></li>
> <li class="li1"><div class="de1">     * JSON-RPC Server setup</div></li>
> <li class="li1"><div class="de1">     */</div></li>
> <li class="li1"><div class="de1">    public function
> getJsonRpcServer()</div></li>
> <li class="li2"><div class="de2">    {</div></li>
> <li class="li1"><div class="de1">        // Disable auto-rendering and
> layouts</div></li>
> <li class="li1"><div class="de1">       
> $this->_helper->viewRenderer->setNoRender(true);</div></li>
> <li class="li1"><div class="de1">       
> $this->_helper->layout->disableLayout(true);</div></li>
> <li class="li1"><div class="de1"> </div></li>
> <li class="li2"><div class="de2">        $server = new
> Zend_Json_Server();</div></li>
> <li class="li1"><div class="de1">       
> $server->setTransport('POST')</div></li>
> <li class="li1"><div class="de1">           
> ->setTarget('/dashboard/options')</div></li>
> <li class="li1"><div class="de1">           
> ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2)</div></li>
> <li class="li1"><div class="de1">           
> ->setClass('Options');</div></li>
> <li class="li2"><div class="de2"> </div></li>
> <li class="li1"><div class="de1">        return $server;</div></li>
> <li class="li1"><div class="de1">    }</div></li>
> <li class="li1"><div class="de1"> </div></li>
> <li class="li1"><div class="de1">    public function
> jsonRpcAction()</div></li>
> <li class="li2"><div class="de2">    {</div></li>
> <li class="li1"><div class="de1">        $server =
> $this->getJsonRpcServer();</div></li>
> <li class="li1"><div class="de1">        $response =
> $this->getResponse();</div></li>
> <li class="li1"><div class="de1"> </div></li>
> <li class="li1"><div class="de1">        if ($this->getRequest()->isGet())
> {</div></li>
> <li class="li2"><div class="de2">            $smd =
> $server->getServiceMap();</div></li>
> <li class="li1"><div class="de1">           
> $smd->setDojoCompatible(true);</div></li>
> <li class="li1"><div class="de1">           
> $response->setHeader('Content-Type', 'application/json')</div></li>
> <li class="li1"><div class="de1">               
> ->setBody($smd->toJson());</div></li>
> <li class="li1"><div class="de1">        } else {</div></li>
> <li class="li2"><div class="de2">            $result =
> $server->handle();</div></li>
> <li class="li1"><div class="de1">           
> $response->setBody($result->toJson());</div></li>
> <li class="li1"><div class="de1">        }</div></li>
> <li class="li1"><div class="de1">    }</div></li>
> <li class="li1"><div class="de1"> </div></li>
> <li class="li2"><div class="de2">    /**</div></li>
> <li class="li1"><div class="de1">     * Edit blog options</div></li>
> <li class="li1"><div class="de1">     */</div></li>
> <li class="li1"><div class="de1">    public function
> blogAction()</div></li>
> <li class="li1"><div class="de1">    {</div></li>
> <li class="li2"><div class="de2">        // Form setup &
> processing</div></li>
> <li class="li1"><div class="de1">        $form =
> $this->_helper->formLoader();</div></li>
> <li class="li1"><div class="de1">       
> $form->blog_hash->setSalt($this->salt);</div></li>
> <li class="li1"><div class="de1">       
> $form->populate($this->options->toArray());</div></li>
> <li class="li1"><div class="de1">        $request =
> $this->getRequest();</div></li>
> <li class="li2"><div class="de2">        if (($request->isPost()) &&
> ($form->isValid($request->getPost()))) {</div></li>
> <li class="li1"><div class="de1">            // Save options and
> redirect</div></li>
> <li class="li1"><div class="de1">           
> $this->options->synchronizeWithArray($form->getValues());</div></li>
> <li class="li1"><div class="de1">           
> $this->options->save();</div></li>
> <li class="li1"><div class="de1">           
> $this->messenger->addMessage(self::BLOG_OPTIONS_SAVED);</div></li>
> <li class="li2"><div class="de2">           
> $this->redirector->gotoSimple('edit', 'options', 'dashboard'); </div></li>
> <li class="li1"><div class="de1">        }</div></li>
> <li class="li1"><div class="de1"> </div></li>
> <li class="li1"><div class="de1">        // View variable
> assignment</div></li>
> <li class="li1"><div class="de1">        $this->view->form =
> $form;</div></li>
> <li class="li2"><div class="de2">    }</div></li></ol></div>
> 

-- 
View this message in context: 
http://www.nabble.com/Dojo-%2B-JSON-RPC-tp19033900p19062806.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to