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