无法将 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->input->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->input->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&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 数据获取到模型类中的主要内容,如果未能解决你的问题,请参考以下文章