Matthew Weier O'Phinney a écrit :
> -- Fabrice Terrasson <[EMAIL PROTECTED]> wrote
> (on Wednesday, 02 July 2008, 06:33 PM +0200):
>   
> ....
>   

> Well, you've got one big problem here: autoCompleteDojo() isn't yet
> wrapping Zend_Dojo_Data, so you'll get an inaccurate and invalid
> structure as you show below.
>
> For now, until I refactor autoCompleteDojo(), do this in your action
> instead:
>
>
>     $this->_helper->viewRenderer->setNoRender(true);
>     $this->_helper->layout->disableLayout(true);
>     $response = $this->getResponse();
>     $response->setHeader('Content-Type', 'application/json')
>              ->setBody($f->toJson());
>
> I'll be refactoring autoCompleteDojo() in the coming week to allow
> passing Zend_Dojo_Data objects, as well as to consume Zend_Dojo_Data to
> create the payload when other types are passed to it.
>
>   
I was confused by this helper :)

Thanks for your help !
dojo.data.ItemFileReadStore  seems to accept by default json like:
{"identifier":"produit",
"items":[
{"id":"1","produit":"pomme"},
{"id":"2","produit":"orange"},
{"id":"3","produit":"poire"},
{"id":"4","produit":"abricot"}
]}
(each item in curly brackets).

Zend_Dojo_Data->toJson() returns a json like:
{"identifier":"produit",
"items":{
"pomme":{"id":"1","produit":"pomme"},
"orange":{"id":"2","produit":"orange"},
"poire":{"id":"3","produit":"poire"},
"abricot":{"id":"4","produit":"abricot"}
}}
(no simple bracket around items [ ] and a sole value facing item)
and the dojo store (dojo.data.ItemFileReadStore) is empty.

bypassing Zend_Dojo_Data like that, fill the dojo store correctly :

        $p= new Catalogue();
        $rows= $p->fetchAll()->toArray();
 
        /*
        $f= new Zend_Dojo_Data();      
        $f->setIdentifier('produit');
        $f->addItems( $rows );      
        */
   
          $array = array(
            'identifier' => 'produit',
            'items'      => $rows,
        );

        $f= Zend_Json::encode( $array );
        // context is json
        $this->getResponse()->setBody( $f );

I am using firebug to watch the json Response + aol cdn (
$this->dojo->enable() ).

FT

Reply via email to