как хранить Query в Zend Registry (ZF) - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу сохранить MySQL запрос в реестре Zend, потому что у меня есть одно действие, и это вызов через ajax, но двумя различными способами.

1 = когда происходит событие java-скрипта. то есть

  $("#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;
    }

приведенный выше код принимает значения от элементов, вызывающих мои действия и выполняющих запросы в соответствии. эта работа отлично

2 = когда (zend paginator in my action) ссылки на страницы разбиваются. проблема здесь, когда я нажимаю на любую нумерацию страниц, так что, конечно, он вызывает то же действие и не получает значения, которые я пропустил через вызов ajax, так что это дает ошибку для этого, я изменил свой код следующим образом

 $registry = Zend_Registry::getInstance();  
 $start_date = $this->_getParam('start_date');
$end_date = $this->_getParam('end_date');
$option_call_log = $this->_getParam('option_call_log');
$option_call_log_asc_desc = $this->_getParam('option_call_log_asc_desc');

if(empty($start_date) && empty($end_date) && empty($option_call_log) && empty($option_call_log_asc_desc)){
                 //$select =  $registry->get('select');
                 $select = Zend_Registry::get('select');
                }
                 else{
    if(empty($end_date) || $end_date == ""){
        $select = $DB->select()
             ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction'))
            ->where('phone_service_id = ?', $phone_service_id)
            ->where("date_created >= ?",  $start_date_formatted)
            ->order("".$option_call_log." ".$option_call_log_asc_desc);

            Zend_Registry::set('select',$select);
        }
        else{
            $select = $DB->select()
             ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction'))
            ->where('phone_service_id = ?', $phone_service_id)
            ->where("date_created >= ?",  $start_date_formatted)
            ->where("date_created <= ?",  $end_date_formatted)
            ->order("".$option_call_log." ".$option_call_log_asc_desc);

            Zend_Registry::set('select',$select);
        }
                 }

во-первых, это не будет первым оператором IF, поэтому я сохраняю свой запрос в реестре, и когда щелкают ссылки на страницы, чтобы не задать мои 4 переменные, и первый оператор IF будет выполнен, так что я получу то, что сохранил в реестре , но в этом случае это дает мне ошибку, которая

Message: No entry is registered for key 'select'

любой 1, пожалуйста, помогите мне

1 Ответ

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

Помните, что Zend_Registry сохраняет свои значения только до завершения текущего запроса.Если вы устанавливаете значение в одном запросе и хотите получить его в другом, вместо этого следует использовать Zend_Session.

Надеюсь, это поможет,

...