Действие контроллера, вызываемое различными способами в Zend Framework - PullRequest
0 голосов
/ 16 февраля 2012

my Controller action

public function abcsajaxAction(){
  $start_date = $this->_getParam('start_date');
  $end_date   = $this->_getParam('end_date');


  $myquery; //myquery
  //zend pagination
  }

я называю это действие отсюда, я имею в виду мои js

$("#show_history_call_logs").click(function(){
 var pass = true;
 var start_date    = $("#start_date").val();
 var end_date      = $("#end_date").val();
 var page_to_get   = $('input[name=hidden]').val();

 //some validation
 if(pass == true){
var href= "http://localhost/abc/xyz/index.php/login/"+page_to_get+"/";
var data ='start_date=' + start_date + '&end_date=' + end_date + '&option_call_log=' + option_call_log + '&option_call_log_asc_desc=' + option_call_log_asc_desc;
 $.ajax({ type: "GET",
           url: href,
          data: data,
          success: function(response){
           $('#paged-data-container').html(response);
            }
           });
           return false;
        }

, теперь на этом событии я имею в виду $("#show_history_call_logs").click()

егоработают нормально каждый раз , но, как я уже сказал, в этом действии тоже есть нумерация страниц , поэтому теперь, когда я нажимаю на любую из нумерации страниц, они переходят к этому действию, но поскольку они НЕ получают эти

$start_date = $this->_getParam('start_date');
$end_date   = $this->_getParam('end_date');

в этом случае это дает мне эту ошибку

Message: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

, что на другой стороне они получают, я имею в виду через событие.так как я должен идти, чтобы он работал в обеих сценах.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

не проверено, но попробуйте, может быть, оно работает

if(empty($start_date) && empty($end_date)){
$select = $registry['select']; 
   }
else{
      $select; //your new query
 }

 if(!empty($start_date) && !empty($end_date)){
   Zend_Registry::set('select',$select);
  }
0 голосов
/ 16 февраля 2012

Я не понимаю, чего именно вы хотите достичь.У вас есть начальная и конечная дата в вашем sql запросе.Поэтому вам следует

  • установить параметры
  • переписать ваш запрос, чтобы даты не учитывались, если не присутствовали

Например, таким образом

$start_date = $this->_getParam('start_date', null);

...

$sql = $this->select()->from(x);

if(!empty($startDate)) {

$sql->where('start_date < ?', $startDate)

}

...