我使用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
等等
答案 0 :(得分:0)
在包装变量以获取其值时,必须使用双引号。所以这应该是:
->add_column('Actions', btn_edit("admin/posts/edit/$1") . ' ' . btn_delete("admin/posts/delete/$1"), 'id');
答案 1 :(得分:0)
最终我找到了问题的解决方案。
在select()语句中,我做了这个并正常工作:
$this->datatables->select('posts.id AS pid, posts.title')
两个表的主键中的查询似乎存在冲突,因为我将其设置为id
(posts.id
和posts_categories.id
)。
当我将posts.id AS pid设置为别名时回到查询中,这解决了我的问题。
答案 2 :(得分:0)
只需在代码中调用数据库字段名称,如
$ this-> datatables->选择(' posts.id为id,posts.title') - >选择(' DATE_FORMAT(
date_published
,\'%d-%m-%Y \')ASdate_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命令中选择相同的变量名