2008年12月9日星期二

Re: [fw-mvc] Zend dojo.data usage, i dont understand

-- vladimirn <nezaboravi@gmail.com> wrote
(on Tuesday, 09 December 2008, 02:43 AM -0800):
> I am stucked , cause i want to use zend dojo.data, but after many many hours
> reading zend documentation at
> http://framework.zend.com/manual/en/zend.dojo.data.html i am not able to
> make anything working.
> What i wish to do is the follow.
> When visitor click on link, i want to display text filed. Visitor start to
> type a name of member in that field, and typed name should be autocompleted,
> and all data of that member shows bellow.
> I saw this many time on various web sites, but i cant make this myself.

It takes several steps.

First, you need the appropriate form element. Both ComboBox and
FilteringSelect work for this, but have different capabilities:

* ComboBox allows you to enter arbitrary text; if it doesn't match the
associated list, it is still considered valid. The text entered is
submitted -- *NOT* the option value. (This differs from normal
dropdown selects.)

* FilteringSelect also allows you to enter arbitrary text, but it will
only be considered valid if it matches an option provided to it. The
option value is submitted, just like a normal dropdown select.

Once you've chose the appropriate form element type, you then need to
specify a dojo.data store. If using Zend_Dojo_Form to build the element,
this is relatively painless:

$form->addElement('ComboBox', 'myAutoCompleteField', array(
'label' => 'My autocomplete field:',
'storeId' => 'autocompleter', // used as a JS variable name by dojo
'storeType' => 'dojo.data.QueryReadStore', // type of dojo.data store; this is a
// sane default
'storeParams' => array(
'url' => '/controller/action', // specify the appropriate URL for
// data store handler
),
));

You'll also need to ensure that the appropriate dojo.data store is
loaded in the request, so add the following in your view script when you
render the form:

$this->dojo()->requireModule('dojo.data.QueryReadStore');

Now that your form is setup, let's create an action that will feed the
dojo.data store. It might look like this:

public function autocompleteAction()
{
// First, get the model somehow
$model = $this->getModel();

// Then get some request parameters; here we use the GET params
$params = $this->getRequest()->getQuery();

// Fetch results from the model; again, merely illustrative
$results = $model->query($params);

// Now, create a Zend_Dojo_Data object.
// The first parameter is the name of the field that has a
// unique identifier. The second is the dataset. The third
// should be specified for autocompletion, and should be the
// name of the field representing the data to display in the
// dropdown.
// Assign this to the view
$this->view->data = new Zend_Dojo_Data('id', $results, 'name');
}

Now, create a view script for the action, with the following contents:

<?= $this->data ?>

And now you should be good to go.

> I read about dojo autocomplete helper, and i'v tried all examples from zend
> documentation, but no success.
> Can someone explain me what i should do, and how to make this? My idea is to
> have model members.php, controller MembersController.php (action
> indexAction and viewAction) and viewscript.
> Also, is it possible that once i i finish this (with a help of you, my zend
> friends) data displayed are actually displayed within zend dojo form, ready
> for editing?
> Any example would be appreciated.
> Even attending Matt's webinar about zend dojo wasnt help me lol
> In documentation there are some examples, which i copy pasted, but wont work
> for me :/
> Thanks,
> V
> --
> View this message in context: http://www.nabble.com/Zend-dojo.data-usage%2C-i-dont-understand-tp20912322p20912322.html
> Sent from the Zend MVC mailing list archive at Nabble.com.
>

--
Matthew Weier O'Phinney
Software Architect | matthew@zend.com
Zend Framework | http://framework.zend.com/

没有评论: