Hi Romain,

I don't know why you can't do "var errors = $H(json.errors);" on
prototype 1.6.x
Is there something I miss ??

--
david

On 8 oct, 14:57, Romain Dequidt <dequidt.rom...@gmail.com> wrote:
> As you can see, "onFormSuccess" method is bound to the "onSuccess"
> callback of the Ajax.Request
>
>         onSubmit : function(e) {
>                 Event.stop(e);
>                 var options = {
>                         parameters : this.form.serialize(),
>                         method : this.form.method,
>                         //requestHeaders: {Accept: 'application/json'}, // <- 
> I don't know
> if it's useful
>                         onSuccess : this.onFormSuccess.bind(this)
>                 };
>                 this.resetErrors();
>                 new Ajax.Request(this.form.action, options);
>         },
>
> Actually, my problem is that I don't know how to convert the "errors"
> object (from transport.responseJSON.errors) to be able to do the same
> thing as the version 1.5:
> onFormSuccess : function(transport)
> {
>     var json = transport.responseText.evalJSON(true);
>     var errors = $H(json.errors);
>     if (errors.size() > 0) {
>         this.form.down('.error').show();
>         errors.each(function(pair) {
>             this.showError(pair.key, pair.value);
>             }.bind(this));
>     } else {
>         this.form.submit();
>     }
>
> }
>
> Actually, i think the main trouble is because the new version of Hash
> (since the 1.6.0_rc1, October 16, 2007) is NOT backwards compatible
> with the former Hash class.
>
> On 8 oct, 14:22, "Alex McAuley" <webmas...@thecarmarketplace.com>
> wrote:
>
> > I dont think "onFormSuccess" is  valid.. i think it was changed to
> > "onSuccess" but check the docs just incase
>
> > HTH
> > Alex Mcauleyhttp://www.thevacancymarket.com
>
> > ----- Original Message -----
> > From: "Romain Dequidt" <dequidt.rom...@gmail.com>
> > To: "Prototype & script.aculo.us" <prototype-scriptaculous@googlegroups.com>
> > Sent: Wednesday, October 07, 2009 7:28 PM
> > Subject: [Proto-Scripty] prototype.js from 1.5 from 1.6 in Zend Framework
>
> > > Hi,
>
> > > I'm trying to replace the Prototype JavaScript framework version (1.5)
> > > with the 1.6.0.3 one into a PHP project using Zend framwork, Smarty
> > > and Scriptaculus.
>
> > > I do a Ajax.Request according to the parameters from the
> > > UserRegistrationForm.
>
> > > The response is sent using this helper method:
> > > public function sendJson ($data)
> > > {
> > > $this->_helper->viewRenderer->setNoRender();
>
> > > $this->getResponse()->setHeader('Content-type', 'application/json');
> > > echo Zend_Json::encode($data);
> > > }
>
> > > So, I changed some lines to fit the Prototype JavaScript framework,
> > > version 1.6.0.3 in the
> > > onFormSuccess : function(transport) {
> > > // var json = transport.responseText.evalJSON(true); // <= v 1.5
> > > var json = transport.responseJSON;
> > > // var errors = $H(json.errors); // <= v 1.5
> > > var errors = json.errors;
> > > if (errors.length > 0) {
> > > this.form.down('.error').show();
> > > errors.each( function(pair) {
> > > this.showError(pair.key, pair.value);
> > > }.bind(this));
> > > } else {
> > > this.form.submit();
> > > }
> > > }
>
> > > But actually this code doesn't work since errors is an "Object" and
> > > "length" property is undefined... (that's what i've seen in Firedebug)
>
> > > So I would like to know how I can process "errors" object to retrieve
> > > the key/value pairs.
>
> > > "errors" object is managed by a "FormProcessor" object:
> > > <?php"
> > >    abstract class FormProcessor
> > >    {
> > >        protected $_errors = array();
> > >        protected $_vals = array();
> > >        private $_sanitizeChain = null;
>
> > >        public function __construct()
> > >        {
>
> > >        }
>
> > >        abstract function process(Zend_Controller_Request_Abstract
> > > $request);
>
> > >        public function sanitize($value)
> > >        {
> > >            if (!$this->_sanitizeChain instanceof Zend_Filter) {
> > >                $this->_sanitizeChain = new Zend_Filter();
> > >                $this->_sanitizeChain->addFilter(new
> > > Zend_Filter_StringTrim())
> > >                                     ->addFilter(new
> > > Zend_Filter_StripTags());
> > >            }
>
> > >            // filter out any line feeds / carriage returns
> > >            $ret = preg_replace('/[\r\n]+/', ' ', $value);
>
> > >            // filter using the above chain
> > >            return $this->_sanitizeChain->filter($ret);
> > >        }
>
> > >        public function addError($key, $val)
> > >        {
> > >            if (array_key_exists($key, $this->_errors)) {
> > >                if (!is_array($this->_errors[$key]))
> > >                    $this->_errors[$key] = array($this->_errors
> > > [$key]);
>
> > >                $this->_errors[$key][] = $val;
> > >            }
> > >            else
> > >                $this->_errors[$key] = $val;
> > >        }
>
> > >        public function getError($key)
> > >        {
> > >            if ($this->hasError($key))
> > >                return $this->_errors[$key];
>
> > >            return null;
> > >        }
>
> > >        public function getErrors()
> > >        {
> > >            return $this->_errors;
> > >        }
>
> > >        public function hasError($key = null)
> > >        {
> > >            if (strlen($key) == 0)
> > >                return count($this->_errors) > 0;
>
> > >            return array_key_exists($key, $this->_errors);
> > >        }
>
> > >        public function __set($name, $value)
> > >        {
> > >            $this->_vals[$name] = $value;
> > >        }
>
> > >        public function __get($name)
> > >        {
> > >            return array_key_exists($name, $this->_vals) ? $this->_vals
> > > [$name] : null;
> > >        }
> > >    }
> > > ?>
>
> > > thanks,
>
> > > Romain
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to