Не удалось получить данные URL-адреса в класс модели

#php #jquery #ajax #codeigniter

Вопрос:

В настоящее время у меня есть таблица, которая показывает количество всех статусов продукта. Теперь эти подсчеты доступны для кликабельности и ведут на другую страницу, на которой отображаются подробные данные о любом элементе, на который был сделан щелчок. Я могу получить эти данные, введя их в URL-адрес с помощью

 lt;a target='_blank' href='".site_url('reports/lists?source=' . $title . 'amp;status=' . $status) . "'gt;  

Это правильно помещает данные о продукте, на который я нажал, в URL-адрес. Теперь я пытаюсь получить эти данные из URL-адреса и, соответственно, отфильтровать данные в соответствии со значениями, которые присутствуют в URL-адресе, но я не могу получить значение из URL-адреса, чтобы отфильтровать его, даже после того, как я использовал $leadsource = $this-gt;input-gt;get('status');

Просмотр Класса:

 lt;?php  $sess=$this-gt;session-gt;userdata();  $post = array('fstatus'=gt; $sess['fstatus'],'fsource'=gt; $sess['fsource']); $postd = json_encode(array_filter($post)); $leadstatus = $this-gt;input-gt;get('source'); ?gt; lt;table id="item-list"gt;  lt;trgt;   lt;thgt;Ref.No#lt;/thgt;  lt;thgt;Sourcelt;/thgt;  lt;/trgt; lt;/tablegt;  lt;scriptgt; $(document).ready(function() {  function sendreq(){  setpostdatas();cleartable();getleads();  }   var userrole = "lt;?php echo $this-gt;session-gt;userdata('clientrole')?gt;";  var leadsource = "lt;?php echo $leadsource ?gt;";  var slug = 'lt;?php echo $slug?gt;';  var postd = 'lt;?php echo $postd; ?gt;'; if( userrole gt; 1 amp;amp; 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: "lt;?php echo site_url(); ?gt;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-gt;input-gt;get('status');  if(isset($_POST['postdata'])){  if($_POST['postdata'] != null amp;amp; $_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-gt;session-gt;userdata('clientrole') == 1 || $this-gt;session-gt;userdata('clientrole') == 5 ){  $content['leads']=$this-gt;leads_model-gt;get_pagination($_POST['length'],$offset,$where,'',false,$sortQ?$sortQ:'l.assign_status ='Unassigned' desc,',$all,$leadsource);   }else{  $content['leads']=$this-gt;leads_model-gt;get_pagination($_POST['length'],$offset,$where,'',false,$sortQ?$sortQ:'l.assigned_date desc,',$all,$leadsource);  }  public function lists($slug='')  {  $this-gt;load-gt;model(array('crm/crm_model'));   $content['propertyrefnos']=$this-gt;crm_model-gt;property_refnos();  $content['is_mobile'] = $this-gt;ismob;  $content['sources']= $this-gt;sources_model-gt;get_active(array(),'id,title','title asc' );  }  

Класс Модели:

 function get_pagination($num, $offset, $cond='',$order='',$unlimit=false,$add_order='',$all='',$leadsource)  {  $this-gt;db-gt;select("l.*");  $sess=$this-gt;session-gt;userdata();   if(is_array($cond) amp;amp; count($cond)gt;0){ $this-gt;db-gt;where($cond); }   if(empty($cond)){   if($sess['afstatus']==''){  $leadsource = $this-gt;input-gt;get('status');  if($searchdata['keyword'] !='' || $searchdata['fstatus'] !='' || $searchdata['fproject'] || $searchdata['fdevelop'] || $all != ''){  $this-gt;db-gt;where_in('lead_status',array(1,8,9,2,3,4,10,11));   $this-gt;db-gt;where('lead_source',$leadsource);  }  else {  $this-gt;db-gt;where_in('lead_status',array(1,8,9,11));  $this-gt;db-gt;where('lead_source',$leadsource);}  }  } .... $query = $this-gt;db-gt;get(); return $query-gt;result_array();  

Здесь, как вы можете видеть, я попытался добавить $leadsource = $this-gt;input-gt;get('status'); в свой класс контроллера и свою модель, но ни один из них не возвращает мне данные URL, которые я хочу. Но если поместить этот код в контроллер функции «Мои списки», он вернет мне данные из URL-адреса, но я хочу, чтобы это произошло в моей функции loadLeads.

Я добавил следующее в свой контроллер загрузки, и вывод источника всегда равен нулю:

 $output = array(  "source" =gt; $leadsource,  "data" =gt; $data   );   echo json_encode($output);   exit();  

Комментарии:

1. Что вы пытались сделать, чтобы решить эту проблему? Где ты застрял? Что же $leadsource в нем содержится?

2. $leadsource должен содержать мои URL-данные. Так что на данный момент , если мой URL есть http://localhost/reports/lists?source=Product1amp;status=4 , то leadsource должен содержать Product1 . Теперь это работает, когда я добавляю этот оператор в свой контроллер списков, но он не работает, когда он добавляется в мой контроллер загрузок. Вот где я застрял

3. И что же $leadsource в нем содержится? Не гадай, не объясняй, брось это

4. Да, я сделал var_dump($leadsource) в контроллере списков и контроллере загрузок. Он отображается, когда он находится в контроллере списков, но не тогда, когда он находится в загрузках. Когда я пытаюсь поместить его в заголовки и обновить страницу, она выдает DataTables warning: table id=item-list - Invalid JSON response.

Ответ №1:

Вы должны фиксировать параметры в своем контроллере, а не в своем режиме.

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

И поскольку эти параметры передаются по URL-адресу, вы должны получить к ним доступ с помощью $_GET .

 public function loadLeads($p=''){  $leadsource = $this-gt;input-gt;get('status');   // your other controller codes here }  

Комментарии:

1. Когда я пытаюсь поместить его в заголовки и обновить страницу, которую он выдает DataTables warning: table id=item-list - Invalid JSON response .