En el controlador estoy generando un formulario especial por ID, pasado desde AJAX. La salida del formulario es JSON. La forma crea finamente Pero mi problema es mostrar este JSON a la vista. ¿Cómo?Zend Framework JSON Output
Gracias.
En el controlador estoy generando un formulario especial por ID, pasado desde AJAX. La salida del formulario es JSON. La forma crea finamente Pero mi problema es mostrar este JSON a la vista. ¿Cómo?Zend Framework JSON Output
Gracias.
En controlador (http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.json):
$this->getHelper('json')->sendJson(array(
'param1' => 'v1'
'param2' => 'v2'
));
En vista (http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.json):
<?php
echo $this->json(array(
'param1' => 'v1'
'param2' => 'v2'
));
?>
La forma más sencilla es dejar de vista de ser ejecutado:
function jsonAction() {
....
print $json;
exit;
}
ver también comprobar http://pl.php.net/json_encode si usted no tiene ya cadena JSON.
JSON es una cadena codificada que contiene VARs en el estilo de JS si necesita acceder al miembro de esta cadena que necesita para json_decode la cadena para
$result = json_decode($jsonString);
pero tenga en cuenta que JSON tratar matriz PHP asociativo como objeto php. .. así que si pasas una matriz puedes acceder a ella como $ result-> memberReference not $ result ['memberReference'];
Usted puede utilizar la clase Zend
$sData = Zend_Json::encode($aArray);
o puede utilizar escenario avanzado como:
$data = array(
'onClick' => new Zend_Json_Expr('function() {'
. 'alert("I am a valid javascript callback '
. 'created by Zend_Json"); }'),
'other' => 'no expression',
);
$jsonObjectWithExpression = Zend_Json::encode($data,false,
array('enableJsonExprFinder' => true)
);
Es útil si usa AJAX que obtiene datos codificados json con nuevos objetos :) –
La mejor manera de TODO esto en mi opinión es la asignación de un controlador como salida JSON, entonces usted puede hacer esto:
class Api_IndexController extends Zend_Controller_Action {
public function init() {
$this->data = array();
}
public function preDispatch() {
$this->variables = $this->_getAllParams();
}
public function postDispatch() {
$this->_helper->json($this->data);
}
public function __call($name, $args) {
return;
}
public function forumAction() {
$this->mapper = new ORM_Model_Mapper_Forum();
$this->model = new ORM_Model_Forum();
$this->dbTable = new ORM_Model_DbTable_Forum();
if (isset($this->variables['id']) && is_numeric($this->variables['id'])) {
$output = $this->model->find($this->variables['id']);
if ($output->id == null) {
return $this->_setError(404);
}
} else {
$output = $this->mapper->fetchAllToArray();
}
$this->data = $output;
}
private function _setError($code=500) {
$this->data = array('error' => $code);
}
}
..unless por supuesto que acaba de especificar 'true' como parámetro el número 2 : 'json_decode ($ jsonString, true)', ya que luego devolverá una 'matriz' en lugar de' stdObject'. – h2ooooooo