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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---