Zend Framework and dojo: tricky checkbox
Posted by Faheem Abbas on January 22, 2009
Few weeks back, I used dojo check box in my Zend framework application. Scenario was a bit different at that time. I was submitting Zend dojo form on the click event of the checkbox. When I created a form and submitted that onclik, It didn’t give me desired results.
I set its checked value to 1 and unchecked value to 0, however when I submited it always gave me a single value. I was looking for 0 and 1, but it always gave me 0. I thought that It was because I was not using proper submit button for the posting of form.
However when today I used checkbox in normal zend dojo form, it gave me the same result. Oh God, how to fix it.
However as I have played with dojo js files, so I got the solution.
Let’s tell you the trick.
First of all create check box as
$checkbox= $form->createElement(
‘checkBox’,
‘checkbox’,
array(
‘label’ => ‘Tricky check box’,
‘checkedValue’ => 1,
‘uncheckedValue’ => 0
)
);
Now add onclick event to this checkbox element as
$checkbox->setAttrib(‘onclick’,'changeValue()’);
Now in your view, where you display this form, write the following javascript function
<script>
function changeValue()
{
if(dijit.byId(‘checkbox’).checked){
dijit.byId(‘checkbox’).setValue(‘1′);
} else {
dijit.byId(‘checkbox’).setValue(‘0′);
dijit.byId(‘checkbox’).checked=false;
}
}
</script>
The above code isn’t simple?
Hmm. First we see if we have checked the checkbox, if yes we assign value 1 to it, if not we assign it value 0 and set its checked status to false. This will uncheck the checkbox.
That’s it. Submit your form and you will get desired results.
Doesn’t it help you. Do you have smarter solution than this.
Tell me……
zendfan said
Hi.. You have good tutorials here about zend framework an dojo… But you can try to do tutorials about zend framework and jquery that is more popular =)
Sekar said
Hi
The Above code is very useful to me. But i have one doubt, i change value function youn used dijit.byId. Is ‘dijit’ is the name of the form,If i set like this it show’s error like “dijit undefined”
Can u give solution?
Thanks in advance