无法将 url 数据获取到模型类中

Posted

技术标签:

【中文标题】无法将 url 数据获取到模型类中【英文标题】:Unable to GET url data into model class 【发布时间】:2021-12-12 14:21:20 【问题描述】:

目前我有一个表格,显示产品所有状态的计数。现在这些计数是可点击的,并导致另一个页面显示被点击的任何项目的详细数据。我可以通过将其放入 URL 中来获取此数据

<a target='_blank' href='".site_url('reports/lists?source=' . $title . '&status=' . $status) . "'>

这会正确地将我在 URL 中单击的产品的数据。 现在我正在尝试从 URL 中获取这些数据,并根据 URL 中存在的值相应地过滤数据,但是即使在我使用了 $leadsource = $this-&gt;input-&gt;get('status');

查看类:

<?php  
$sess=$this->session->userdata(); 
$post = array('fstatus'=> $sess['fstatus'],'fsource'=> $sess['fsource']);
$postd = json_encode(array_filter($post));
$leadstatus = $this->input->get('source');
?>
<table id="item-list">
            <tr> 
                <th>Ref.No#</th>
                <th>Source</th>
            </tr>
</table>

<script>
$(document).ready(function() 
  function sendreq()
    setpostdatas();cleartable();getleads();
  

   var userrole = "<?php echo $this->session->userdata('clientrole')?>";
   var leadsource = "<?php echo $leadsource ?>";
   var slug = '<?php echo $slug?>';
   var postd = '<?php echo $postd; ?>';
if( userrole > 1 && userrole != 5)
    $('#item-list').DataTable(
        "processing": true,
        "stateSave": true,
        "serverSide": true,
        "ordering": false,
          "createdRow": function( row, data, dataIndex)
            $(row).has( "div.overdueupdate" ).css('background-color','#FFC7CE');
              ,
        "ajax": 
            url: "<?php echo site_url(); ?>reports/loadLeads",
            data: slug: slug, postdata: postd, leadsource: leadsource,
            type : 'POST',
            "dataSrc": function ( d ) 
                d.myKey = "myValue";
                if(d.recordsTotal == 0 || d.data == null)
                   $("#item-list_info").text("No records found");
                    $("#item-list_processing").css("display","none");
                
                return d.data;
            
        ,
        'columns': [
            "data": "id", "id": "id",
            "data": "refno", "refno": "refno",
            "data": "source", "source": "source",   
        ]
    );
  

控制器类:

public function loadLeads($p='')
        $leadsource = $this->input->get('status');
        if(isset($_POST['postdata']))
            if($_POST['postdata'] != null && $_POST['postdata'] != 'null')
                $post=$_POST['postdata'];
            
            $post = json_decode($post,true);
            unset($post['slug']);
            unset($post['page']);
            $sort = $post['afsort'];
            if($sort == "asc")
                $sortQ = 'l.updated_date asc,';
            else if ($sort == "desc")
                $sortQ = 'l.updated_date desc,';
            
        
        $offset = (int)$_POST['start'] ;
        $pstdatas = explode(',', $_POST['postdata']);
        unset($pstdatas['item-list_length']);
        if($this->session->userdata('clientrole') == 1 || $this->session->userdata('clientrole') == 5 )
            $content['leads']=$this->leads_model->get_pagination($_POST['length'],$offset,$where,'',false,$sortQ?$sortQ:'l.assign_status =\'Unassigned\' desc,',$all,$leadsource);          
        else
            $content['leads']=$this->leads_model->get_pagination($_POST['length'],$offset,$where,'',false,$sortQ?$sortQ:'l.assigned_date desc,',$all,$leadsource);
        

public function lists($slug='')
    
        $this->load->model(array('crm/crm_model'));  
        $content['propertyrefnos']=$this->crm_model->property_refnos();
        $content['is_mobile'] = $this->ismob;
        $content['sources']= $this->sources_model->get_active(array(),'id,title','title asc' );
      

模型类:

function get_pagination($num, $offset, $cond='',$order='',$unlimit=false,$add_order='',$all='',$leadsource)
    
        $this->db->select("l.*");
        $sess=$this->session->userdata(); 
        if(is_array($cond) && count($cond)>0) $this->db->where($cond); 

        if(empty($cond))           
            if($sess['afstatus']=='')
                $leadsource = $this->input->get('status');
                if($searchdata['keyword'] !='' || $searchdata['fstatus'] !='' || $searchdata['fproject'] || $searchdata['fdevelop'] || $all != '')
                $this->db->where_in('lead_status',array(1,8,9,2,3,4,10,11)); 
                $this->db->where('lead_source',$leadsource);
                
                else            
                $this->db->where_in('lead_status',array(1,8,9,11));
                $this->db->where('lead_source',$leadsource);
                
        
....
$query =  $this->db->get();
return $query->result_array();

如您所见,我已尝试在我的控制器类和模型中添加$leadsource = $this-&gt;input-&gt;get('status');,但它们都没有返回我想要的 url 数据。但是将此代码放在我的列表函数控制器下会返回来自 URL 的数据,但我希望它发生在我的 loadLeads 函数中。

我在 loadleads 控制器中添加了以下内容,并且 source 的输出始终为空:

        $output = array(
            "source" => $leadsource,
            "data" => $data 
        );

        echo json_encode($output); 
        exit();

【问题讨论】:

您尝试过什么来解决问题?你被困在哪里了? $leadsource 包含什么? $leadsource 应该包含我的 URL 数据。所以到目前为止,如果我的网址是http://localhost/reports/lists?source=Product1&amp;status=4,那么leadsource 应该包含Product1。现在,当我在我的列表控制器中添加此语句时,它可以工作,但是当它添加到我的 loadLeads 控制器时它不起作用。这就是我被困的地方 $leadsource 包含什么?不要猜测,不要解释,甩掉它 是的,我已经在列表控制器和 loadLeads 控制器中完成了 var_dump($leadsource)。它在列表控制器中时显示,但在 loadLeads 中时不显示。当我尝试将其放入负载引导并刷新页面时,它会给出DataTables warning: table id=item-list - Invalid JSON response. 【参考方案1】:

您必须在控制器中捕获参数,而不是在模态中。

$leadsource = $this->input->get('status');

因为这个参数是通过 URL 传递的,所以你必须使用$_GET 来访问它们。

public function loadLeads($p='')
     $leadsource = $this->input->get('status');

     // your other controller codes here

【讨论】:

当我尝试将其放入加载信息并刷新页面时,它会提供DataTables warning: table id=item-list - Invalid JSON response

以上是关于无法将 url 数据获取到模型类中的主要内容,如果未能解决你的问题,请参考以下文章

无法仅从模型页面获取 URL 段

如何从一个类中获取数据到 viewController?

从 C# 中的属性获取图像 URL

无法使用pthreads访问线程类中的CI对象

使用 web api 编辑获取数据时无法将数据绑定到 jqgrid 中的下拉列表

无法在 google-services.json 中获取 firebase_url