【问题标题】:Ignited Datatables - issue with links in add_column点燃的数据表 - add_column 中的链接问题
【发布时间】:2015-09-27 13:08:58
【问题描述】:

我正在使用 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 没有传入按钮的 url,而是我得到了这个:admin/posts/edit/id,它应该是 admin/posts/edit/1

【问题讨论】:

    标签: jquery codeigniter datatables


    【解决方案1】:

    当包装变量以获取它们的值时,您必须使用双引号。所以这里应该是:

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

    Docs.

    【讨论】:

    • 不,它似乎不起作用..我注意到这一点,当我需要加入帖子类别时..在此之前(或者如果我从查询中删除 JOIN 和选择类别)它工作得非常好,也用单引号
    • 奇怪。即使在 Datatables 文档中,双引号也用于此类示例。
    • 问题仅出现在 JOIN 语句中。如果我删除这个链接正常工作
    • @Lykos,尝试使用'posts.id' 而不是'id'
    • 我试过了,但也没有用,但是我找到了解决方案。我会把它作为答案发布,以防其他人遇到/遇到同样的问题。
    【解决方案2】:

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

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

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

    两个表的主键查询好像有冲突,因为我都设置为idposts.idposts_categories.id)。

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

    【讨论】:

      【解决方案3】:

      只需在代码中调用数据库字段名称即可

      $this->datatables->select('posts.id as 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();
      

      您只是缺少将 posts.id 称为 id。作为变量传递的名称是什么,您需要在选择命令中选择相同的变量名称

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多