在JQuery Datatables中使用Code Igniter Model函数渲染函数

时间:2017-09-15 12:48:36

标签: php jquery codeigniter datatables

我正在使用JQuery Datatables在一个名为'users'的表中显示我论坛的所有用户。我正在使用Code Igniter进行服务器端处理。我查阅了Datatables文档,了解如何呈现数据,然后我就开始了。但是,我有一些PHP变量和函数,我想回应一个JavaScript变量,所以我可以在目标列的render函数中使用它们。但是,我想知道如何将带有参数的不同表中的模型函数回显到JavaScript变量中,或者这是否是一个好方法。以下是我的设置。我只发布了与这个问题相关的行(除非我做错了)。

模型(Dashboard_model)

public function my_followee($followee) {
    $username = $this->session->username;
    return $this->db->get_where('followers', array('user' => $followee, 'follower' => $username))->row_array();
}

JS:

{   
    "targets": [-1],
    "data": null,
    "orderable": false,
    "render": function ( data, type, full ) {
        var myself = "<?php echo $this->session->username; ?>";
        var is_following = "<?php echo $this->dashboard_model->my_followee('+full[1]+');" //full[1] is username column
        if(is_following == false && myself !== full[1]) { 
            return <a href="<?php echo base_url(); ?>follow/'+full[1]+'"> Follow </a>';                     
        } else if(is_following == true && myself !== full[1]) { 
            return <a href="<?php echo base_url(); ?>unfollow/'+full[1]+'"> Unfollow </a>'; 
        } else if(myself == full[1]) { 
            return 'This is you';
        }
    }
 }  

基本上,我想检查登录用户是否已经关注当前选定的用户。如果不是,请显示关注按钮,否则显示取消关注按钮。  当我检查页面时,所有按钮都跟随(当前登录用户除外),而有些按钮应返回true并显示取消关注。我怀疑我违反了这一行中的语法规则:

var is_following = "<?php echo $this->dashboard_model->my_followee('+full[1]+');" 

我是JQuery和Datatables的新手,似乎无法找到正确的方法。请有人指出我正确的方向,或建议更好的方法来实现我的目标?我非常感谢你的帮助。

修改 我在我的控制器中尝试了这个来处理ajax调用请求

    public function users_ajax_list()
    {
            $this->load->model('user/users_model', 'users');
            $this->load->model('dashboard_model');
            $list = $this->users->get_users();
            $data = array();
            foreach ($list as $user) {
                if ($this->dashboard_model->my_followee($user->username) == true) {
                    $is_following = true;
                } else {
                    $is_following = false;
                }
                $row = array();         
                $row[] = $user->profile_image;
                $row[] = $user->username;
                $row[] = ucfirst($user->surname);
                $row[] = ucfirst($user->first_name);
                $row[] = ucfirst($user->state);
                $row[] = ucfirst($user->lga);
                $row[] = $user->followers;
                $row[] = $user->following;
                $row[] = $user->total_posts;
                $row[] = $user->gender;
                $data[] = $row;
            }
            $output = array(
                            "draw" => $_POST['draw'],
                            "recordsTotal" => $this->users->count_all_users(),
                            "recordsFiltered" => $this->users->count_filtered_users(),
                            "data" => $data,
            );
            //output to json format
            echo json_encode($output);
            echo json_encode($is_following);        
   }

它产生了错误:错误的JSON响应。我究竟做错了什么?最好的方法是如何做到的?如何在目标列的render函数中访问JSON变量。

0 个答案:

没有答案