如何使用json与cakephp

时间:2013-12-11 09:41:51

标签: json cakephp-2.3

我完全失去了json和cakephp。 我从数据库中提取数据

$this->loadModel('Config');
        $config = $this->Config->find('first',array(
                'fields' => array(
                            'sitename',
                            'sitestatus',
                            'siteadminemail',
                            'sitehomepage', // homepage
                            'poststatus',
                            'postrssstatus',
                            'mailusesmtp',
                            'mailsmtpuser',
                            'mailsmtppw',
                            'mailsmtpport',
                            'mailsmtphosts',
                            'mailsmtpauth',
                            'mailcharset',
                            'mailencoding',
                            'sociaddthis',
                            'socifacebook',
                            'socifacebookuser',
                            'socitwitter',
                            'socitwitteruser',
                            'socilinkedin',
                            'socilinkedinuser',
                            'socigoogle',
                            'socigoogleuser'
                            ),
                'conditions'=> array(
                    'id'=>1
                )
        ));

我想序列化为json形式。 我的目标是在我的cakephp应用程序中的某处获得其中一个值。例如,在布局,控制器,模型或视图或组件中。

我看到了一些关于json的信息。例如,我红了,我必须在我的roote.php

中添加它
Router::parseExtensions('rss','json');

我加了json。 然后在我的AppController上添加'RequestHandler'作为组件。

 public $components = array(
        'Acl',
        'Auth' => array(
             // For the ACL
            'authorize' => array(
                'Actions' => array('actionPath' => 'controllers')
            ),
            'authError' => 'Pensiez-vous réellement que vous étiez autorisés à voir cela ?',
            // Mets des condition au niveau de la validation d'authentificate
            // Contient l'ensemble des methode d'authentification
            'authenticate' => array(
                // Mehtode Form est utilisée
                'Form' => array(
                    // Defini les paramêtre scope. Ici défini que le compte doit est actif
                    'scope'=> array('User.active' =>1)
                )
            )
        ), 
        'Session',
        'Ctrl',
        'RequestHandler' // Ajouté pour jSon

    );

但是现在,我不知道如何序列化$ configs以及如何使用序列化的json数据。

有些人有例子,totu,帮助?

非常感谢大家

1 个答案:

答案 0 :(得分:0)

序列化对象以在视图中使用它是没有意义的。由于您添加了json-router,因此您似乎希望将响应作为json对象发送到客户端,而不是在视图文件中使用它。 在那种情况下,这很容易。在您的控制器操作中,只需执行

public function getConfigAsJson() {
  $config = $this->Config->find('first', ...etc...);
  return new CakeResponse(array('body' => $config, 'type' => 'json'));
}

这根本不需要任何视图文件。如果您有REST服务或想要使用从客户端到服务器的ajax调用,那么很有用。