使用Zend JSON将Doctrine Resultset转换为JSON



我已经看到了所有内容> 在使用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']));
            }
        });

希望它有帮助。

相关内容

  • 没有找到相关文章

最新更新