我已经看到了所有内容> 在使用Findby Query时转换数据。
我想要的是从此查询的重置集的JSON字符串,以确保对象被序列化,以便我可以在其他地方使用它:
$posts = $entityManager->getRepository(ApplicationEntityPost::class)
->findBy(['status'=>ApplicationEntityPost::STATUS_PUBLISHED],
['dateCreated'=>'DESC']);
Json::encode($posts,true)
来自 Zend Framework Json
,但是当我这样做时,数据没有显示。
结果将是一个带有实体对象的JSON编码字符串,我可以通过其他地方
我将用于解码:
ZendJsonDecoder::decode($posts,ZendJsonJson::TYPE_OBJECT)
除非我应该使用 ZendJsonJson::TYPE_ARRAY)
这是我这样做的方式:
包括: use ZendJsonJson;
这是我的函数/操作的示例:
public function getListAction(){
$request = $this->getRequest();
if($request->isPost()){
// recuperer le produit choisi :
$element = $request->getPost("element");
$result = null;
$result = $this->getEntityManager()->getRepository('ApplicationEntityElement')->findBy(array('etat' => 'valide' , 'pkElement' => $element));
$champs = array();
$i = 0;
foreach ($result as $value) {
$champs[$i] = array("id"=>$value->getPkElement() , "nom"=>$value->getNom());
$i++;
}
$data = array(
'result' => true,
'data' => $champs
);
return $this->getResponse()->setContent(Json::encode($data));
}
}
然后在view.phtml中的调用:
$.post('/application/controller_name/getList', {element: $("select[name=element]").val()}, function(result) {
var options = $("select[name=element]");
var obj = JSON.parse(result);
var data = obj.data;
var selected = "";
options.empty();
for (var i = 0; i < data.length; i++) {
options.append($("<option />").val(data[i]['id']).text(data[i]['nom']));
}
});
希望它有帮助。