2012-02-16 2 views
0

私は1つのアクションを持っており、それはajaxを介して2つの異なる方法で呼び出しているため、mysqlクエリをzendレジストリに保存します。クエリをzendレジストリ(ZF)に格納する方法

1 = Javaスクリプトイベントが発生したとき。つまり、

上記のコードは、要素から値をとり、自分のアクションを呼び出してクエリを実行します。 この作品はきれいです

2 =(私のアクションではページをめくってください)ページネーションリンクのクリック。 私は確かに、同じアクションを呼び出すと、私は最初にこの

$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); 
     } 
       } 

ようにそれを私のコードを変更して、そのためにエラーを与えるように、そのは、AJAX呼び出して、私はそれをpasssed値を得ていない任意のページネーションをクリックすると、問題はここにあります最初のIF文には来ないので、レジストリに私のクエリを保存しています。ページネーションリンクがクリックされると、4つの変数が設定されません。最初のIF文は実行されるので、レジストリに格納された内容を取得します。 しかし、その場合には、その私に

Message: No entry is registered for key 'select' 

任意の1であるエラーを与えて、私は

答えて

0

Zend_Registryは、現在の要求が完了するまでの間だけその値を保持していることを覚えておいてください助けてください。 1つのリクエストで値を設定し、別のリクエストで値を取得する場合は、代わりにZend_Sessionを使用してください。

私はその作業は今たかったが、しばらくする手段がセッションであるかもしれないもの

+0

、お役に立てば幸いですが、そのが、それは執拗にする方法を.isをしていないので、期限切れに? –

+0

Zend_SessionのrememberMe()メソッドで少し再生し、後で期限切れにすることができます。詳細はこちら:http://framework.zend.com/manual/en/zend.session.global_session_management.html – dinopmi

関連する問題