cakephp 3.x 和数据表示例

Posted

技术标签:

【中文标题】cakephp 3.x 和数据表示例【英文标题】:cakephp 3.x and datatable example 【发布时间】:2017-11-20 19:53:09 【问题描述】:

我是 cake php 3.4 的新手,我正在尝试使用 ajax 请求和数据表构建一个示例 这是我的控制器:

 public function getdata()

if ($this->request->is('ajax')) 
    $cc = array(
            array('nome'=>'parvez', 'cognome'=>'AA', 'email'=>'101'),
            array('nome'=>'alam', 'cognome'=>'1BB', 'email'=>'102'),
            array('nome'=>'phpflow', 'cognome'=>'CC', 'email'=>'103') );


    $x = array(
            "draw"            => 1,
            "recordsTotal"    => count($cc),
            "recordsFiltered" => count($cc),
            "data"            => $cc
        );
    echo json_encode($x);

 

那么,这里是 che js 代码

<script type="text/javascript">
function myfunc()
   $('#example').DataTable( 
        'processing': true,
        'serverSide': true,
        'ajax':
            type: 'POST',
            url: "<?php echo Cake\Routing\Router::url(
                array(
                   'controller'=>'posts',
                   'action'=>'getdata',
                    '_ext'=>'json',
                   '_full' => true //for full url path
             ));?>",

            success:function(msg)
                console.log(msg);
            ,
            error: function(e) 
                    alert("An error occurred: ");
                    console.log(e);
            
        
     );

操作已正确发送,但我总是收到一条消息错误,其中,在 google chrome 开发工具中,我看到数据后附加了一个“null”:

"draw":1,"recordsTotal":3,"recordsFiltered":3,"data":["nome":"parvez","cognome":"AA","email":"101","nome":"alam","cognome":"1BB","email":"102","nome":"phpflow","cognome":"CC","email":"103"]null

我试图不对动作响应进行 json_encode,在 chrome 中我在数据数组之后看到了这些东西:

App\Controller\PostsController::getdata() - APP/Controller\PostsController.php,第 147 行 Cake\Controller\Controller::invokeAction() - CORE\src\Controller\Controller.php,第 440 行 Cake\Http\ActionDispatcher::_invoke() - CORE\src\Http\ActionDispatcher.php,第 119 行 Cake\Http\ActionDispatcher::dispatch() - CORE\src\Http\ActionDispatcher.php,第 93 行 Cake\Routing\Dispatcher::dispatch() - CORE\src\Routing\Dispatcher.php,第 60 行 [main] - ROOT\webroot\index.php,第 37 行Arraynull

所以,问题出在 index.php 页面,但是为什么它返回一个空数组呢? 谢谢

【问题讨论】:

问题不是来自index.php,这只是堆栈跟踪的开始,显然服务器端正在发生错误/异常。请检查您的日志并将包括其相关堆栈跟踪在内的完整错误消息添加到您的问题中。也看看 ***.com/q/42378793/1392379,控制器动作不应该回显数据! 【参考方案1】:

好的,我认为这段代码坏了,你回显 json 但是,不停止渲染器,请帮助你。

//On controller
$cc = [
'message' = > 'Hello mr.bitdiego'
];
$this->set('data', $cc);
$this->set('_serialize', ['data']);

在您的应用控制器上,当找到序列化数据时,此 altear 模板并将布局渲染到 ajax,请参阅 Template/Layout/Ajax.ctp

但是,你为什么要这样做?请参阅CakeBook: Create Restful Resources 您不创建控制器的操作,现在您使用资源。 :D 请看,方便你的生活。

【讨论】:

thanx sebastiao(和 ndm)。我不知道你发布的宁静资源,我会研究它。我试图为我的工作解决一个(真正的)问题:我必须上传带有用户数据(名字、姓氏、电子邮件等)的 xls 文件,然后我会在数据表中显示这些项目,可能会通过过滤(甚至更多的编辑、删除项目......)所以我认为 DataTables 可能是最好的选择。 好的,是的。数据表是最好的选择。你解决问题了吗?如果解决了,请给答案投票。 啊,对不起,我忘了这个!是的,您的回答非常有用,非常感谢

以上是关于cakephp 3.x 和数据表示例的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 3.x 从实体获取相关数据

Cakephp 3.x 将数据插入两个表

CakePHP 3.x JWT 认证服务器

CakePHP 3.x创建表单模板

保存倍数 Cakephp 3.x

CakePHP 3.x 根据用户组/组织/团队过滤查询结果