This works for me, and for buttons type="submit", not tested in safari, so, I'm not sure my solution is generic.
There is a issue http://framework.zend.com/issues/browse/ZF-2465, and there is my comment at the bottom 29/Nov/09 01:00 AM, but still no response :( Regards, Saša Stamenković On Wed, Dec 23, 2009 at 5:29 PM, Hector Virgen <[email protected]> wrote: > Looks good! Have you filed a bug report for this? > > -- > Hector > > > > On Wed, Dec 23, 2009 at 4:28 AM, Саша Стаменковић <[email protected]>wrote: > >> O.K. This is better: >> >> public function isChecked() >> { >> $value = $this->getValue(); >> if (null === $value) { >> return false; >> } >> >> return true; >> } >> >> Regards, >> Saša Stamenković >> >> >> >> On Wed, Dec 23, 2009 at 12:04 AM, Саша Стаменковић <[email protected]>wrote: >> >>> I need to find out exactly which button is clicked, because I have wizard >>> with multi page form and on each step I have back and forward button. >>> >>> Regards, >>> Saša Stamenković >>> >>> >>> >>> On Wed, Dec 23, 2009 at 12:02 AM, Саша Стаменковић >>> <[email protected]>wrote: >>> >>>> You are right, even with: >>>> >>>> public function isChecked() >>>> { >>>> $value = $this->getValue(); >>>> if (empty($value)) { >>>> return true; >>>> } >>>> >>>> return false; >>>> } >>>> >>>> it behaves wrong on WinXP/FF. Must find the way around this... >>>> >>>> Regards, >>>> Saša Stamenković >>>> >>>> >>>> >>>> On Tue, Dec 22, 2009 at 6:11 PM, Hector Virgen <[email protected]>wrote: >>>> >>>>> I get a fatal error when I try that: >>>>> >>>>> Fatal error: Can't use method return value in write context in >>>>>> /Users/hvirgen/Web/projects/virgentech/application/controllers/IndexController.php >>>>>> on line 49 >>>>> >>>>> >>>>> I swapped it for this test, which is similar to yours: >>>>> >>>>> if (!$this->getValue()) { >>>>> return true; >>>>> } >>>>> >>>>> return false; >>>>> >>>>> But it always returns true, even if I clicked a different submit >>>>> button. Again, this was testing on Chrome for Mac. Other browsers may >>>>> behave >>>>> differently. >>>>> >>>>> Do you just need to test if the form was submitted, or if a specific >>>>> button was clicked? >>>>> >>>>> -- >>>>> Hector >>>>> >>>>> >>>>> >>>>> On Tue, Dec 22, 2009 at 9:04 AM, Саша Стаменковић >>>>> <[email protected]>wrote: >>>>> >>>>>> Yes, I need them to be buttons, styling problems, I need sth like: >>>>>> >>>>>> <button id="quick_search_form_submit" class=" ui-corner-all >>>>>> ui-state-default" accesskey="s" type="submit" name=" >>>>>> quick_search_form_submit"> >>>>>> <span class="ui-icon left ui-icon-search"> </span> >>>>>> Traži >>>>>> </button> >>>>>> >>>>>> And that cannot be done with submit. >>>>>> >>>>>> However, this works for me: >>>>>> >>>>>> public function isChecked() >>>>>> { >>>>>> if (empty($this->getValue())) { >>>>>> return true; >>>>>> } >>>>>> >>>>>> return false; >>>>>> } >>>>>> >>>>>> Regards, >>>>>> Saša Stamenković >>>>>> >>>>>> >>>>>> >>>>>> On Tue, Dec 22, 2009 at 5:50 PM, Hector Virgen <[email protected]>wrote: >>>>>> >>>>>>> My apologies, you're right. I put together a quick test script and >>>>>>> verified that button elements do not always return the correct result >>>>>>> when >>>>>>> calling isChecked(). In my test, using Chrome for Mac the button >>>>>>> element did >>>>>>> not return a value when submitted, which is required by isChecked(). >>>>>>> >>>>>>> However, I don't think this is entirely ZF's fault. >>>>>>> >>>>>>> According to w3schools.com, different browsers return different >>>>>>> values when button elements are clicked. >>>>>>> >>>>>>> Important: If you use the button element in an HTML form, different >>>>>>>> browsers will submit different values. Internet Explorer will submit >>>>>>>> the >>>>>>>> text between the <button> and </button> tags, while other browsers will >>>>>>>> submit the content of the value attribute. Use the >>>>>>>> input<http://www.w3schools.com/tags/tag_input.asp> element >>>>>>>> to create buttons in an HTML form. >>>>>>> >>>>>>> >>>>>>> http://www.w3schools.com/tags/tag_button.asp >>>>>>> >>>>>>> <http://www.w3schools.com/tags/tag_button.asp>I suggest following >>>>>>> their recommendation and using input elements instead of buttons, >>>>>>> unless you >>>>>>> absolutely need them to be buttons: >>>>>>> >>>>>>> $form->addElement('submit', 'go_submit', array( >>>>>>> 'label' => 'Submit' >>>>>>> )); >>>>>>> >>>>>>> I verified that submit elements do behave as expected when calling >>>>>>> isChecked(). >>>>>>> >>>>>>> -- >>>>>>> Hector >>>>>>> >>>>>>> >>>>>>> On Mon, Dec 21, 2009 at 11:21 PM, umpirsky <[email protected]>wrote: >>>>>>> >>>>>>>> О.К. I'm using buttons (type="submit"). >>>>>>>> >>>>>>>> Does for you this method returns opposite value then expected? >>>>>>>> >>>>>>>> Regards, >>>>>>>> Saša Stamenković >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Dec 21, 2009 at 6:04 PM, Hector Virgen [via Zend Framework >>>>>>>> Community] <[hidden >>>>>>>> email]<http://n4.nabble.com/user/SendEmail.jtp?type=node&node=976764&i=0> >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> That's because you can have two buttons with the same name but have >>>>>>>>> different values. Only if the value matches will it be considered >>>>>>>>> clicked. >>>>>>>>> >>>>>>>>> Also, with inputs (type=submit), the value and the label are the >>>>>>>>> same thing. To make your button say "OK", its value should be "OK". >>>>>>>>> When the >>>>>>>>> button is clicked, the $_POST data will contain the value "OK" for the >>>>>>>>> button. In ZF, that's why $element->setLabel() affects the value of >>>>>>>>> the >>>>>>>>> submit input. >>>>>>>>> >>>>>>>>> When it's not clicked, there may still be another input (hidden?) >>>>>>>>> that sets the value to an empty string. This is why the label is >>>>>>>>> tested >>>>>>>>> against the value. >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Hector >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Dec 21, 2009 at 6:31 AM, umpirsky <[hidden >>>>>>>>> email]<http://n4.nabble.com/user/SendEmail.jtp?type=node&node=976348&i=0> >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi. >>>>>>>>>> >>>>>>>>>> For me, isChecked method works only after I set my buttons >>>>>>>>>> (type="submit") >>>>>>>>>> have same value for label and value attribs. >>>>>>>>>> Also, it returns opposite value then expected, false when button >>>>>>>>>> is clicked! >>>>>>>>>> >>>>>>>>>> Lets take a look at buton/submit isChecked method: >>>>>>>>>> >>>>>>>>>> /** >>>>>>>>>> * Has this submit button been selected? >>>>>>>>>> * >>>>>>>>>> * @return bool >>>>>>>>>> */ >>>>>>>>>> public function isChecked() >>>>>>>>>> { >>>>>>>>>> $value = $this->getValue(); >>>>>>>>>> >>>>>>>>>> if (empty($value)) { >>>>>>>>>> return false; >>>>>>>>>> } >>>>>>>>>> if ($value != $this->getLabel()) { >>>>>>>>>> return false; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> return true; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> pretty odd, huh? I don't know why it is implemented this way, but >>>>>>>>>> I patched >>>>>>>>>> it to return opposite value, and it works now. Why label and value >>>>>>>>>> need to >>>>>>>>>> have same value at all? >>>>>>>>>> >>>>>>>>>> Anyone with same behaviour? >>>>>>>>>> -- >>>>>>>>>> View this message in context: >>>>>>>>>> http://n4.nabble.com/Buttons-and-isChecked-method-tp976255p976255.html >>>>>>>>>> Sent from the Zend Framework mailing list archive at Nabble.com. >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> ------------------------------ >>>>>>>> View this message in context: Re: [fw-general] Buttons and >>>>>>>> isChecked >>>>>>>> method<http://n4.nabble.com/Buttons-and-isChecked-method-tp976255p976764.html> >>>>>>>> >>>>>>>> Sent from the Zend Framework mailing list >>>>>>>> archive<http://n4.nabble.com/Zend-Framework-f634138.html>at Nabble.com. >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
