Ignited Datatables - add_column中的链接问题

时间:2015-09-27 13:08:58

标签: jquery codeigniter datatables

我使用Ignited Datatables库,在我的脚本中,我使用add_column函数设置了一些编辑和删除按钮。这是我的剧本

$this->datatables->select('posts.id, posts.title')
        ->select('DATE_FORMAT(`date_published`, \'%d-%m-%Y\') AS `date_published`', false)
        ->select('posts_categories.title as category')
        ->from('posts')
        ->join('posts_categories', 'posts.category_id = posts_categories.id', 'left')
        ->unset_column('id')
        ->add_column('Actions', btn_edit('admin/posts/edit/$1') . ' ' . btn_delete('admin/posts/delete/$1'), 'id');
        return $this->datatables->generate();

问题是帖子ID没有传递到按钮的网址,而是我得到了这个:admin/posts/edit/id,它应该是admin/posts/edit/1等等

3 个答案:

答案 0 :(得分:0)

在包装变量以获取其值时,必须使用双引号。所以这应该是:

->add_column('Actions', btn_edit("admin/posts/edit/$1") . ' ' . btn_delete("admin/posts/delete/$1"), 'id');

Docs

答案 1 :(得分:0)

最终我找到了问题的解决方案。

在select()语句中,我做了这个并正常工作:

$this->datatables->select('posts.id AS pid, posts.title')

两个表的主键中的查询似乎存在冲突,因为我将其设置为idposts.idposts_categories.id)。

当我将posts.id AS pid设置为别名时回到查询中,这解决了我的问题。

答案 2 :(得分:0)

只需在代码中调用数据库字段名称,如

  

$ this-> datatables->选择(' posts.id为id,posts.title')            - >选择(' DATE_FORMAT(date_published,\'%d-%m-%Y \')AS date_published',false)            - >选择(' posts_categories.title作为类别')            - >从('帖子')            - >加入(' posts_categories',' posts.category_id = posts_categories.id',' left')            - > unset_column(' ID')            - > add_column('操作',btn_edit(' admin / posts / edit / $ 1')。'' .btn_delete(' admin /发布/删除/ $ 1'),' id');           返回$ this-> datatables-> generate();

你只是错过了将 posts.id称为id 。作为变量传递的名称是什么,需要在select命令中选择相同的变量名