2016-04-19 9 views
0

У меня есть функция, которая фильтрует мой Paginator так:CakePHP параметры магазина в настройках Paginator

public function indextipo() { 
    $this->CabAsiento->recursive = 0; 
    $tipo = $this->request->data['tipo'];  
    $fecha = $this->request->data['fecha_desde']; 
    $this->Paginator->settings=array(
     'paramType' => 'querystring',    
     'limit'=> 1, 
     'conditions' => array('CabAsiento.tipo_doc' => $tipo, 'MONTH(CabAsiento.fecha)' => $fecha), 
     'order' => array('CabAsiento.id_numero' => 'ASC') 
    ); 
    $this->set('cabAsientos', $this->Paginator->paginate()); 
    $this->layout = 'ingresos';   
} 

это иметь .ctp.

это работает, и отображать данные фильтра, но когда я пытаюсь рядом с другой страница дает мне:

Undefined индекс: типо [APP \ Controller \ CabAsientosController.php, строка 35]

Неопределенный индекс: fecha_desde [APP \ Controller \ CabAsientosController.php, строка 36]

заставляет параметры потеряться. Как я могу сохранить или параметры магазин Thos посылает на поиск:

  <div class="portlet-body"> 
      <?php echo $this->Form->create(false, array('action' => 'indextipo','id' => 'form-login1')); ?> 
      <fieldset> 
      <?php 
       echo $this->Form->input('fecha_desde', array('id'=>'fecha_desde1', 'type' => 'date','dateFormat' => 'M','class' => 'span3')); 
       $arrCategory=array("ing"=>"Ingreso","egre"=>"Egreso","trasp"=>"Trapaso"); 
       echo $this->form->input('tipo',array('type' => 'select','options'=> $arrCategory)); 
      ?> 
      </fieldset> 
     </div> 
     </div> 
     </div> 
    </div> 
    </div> 
    <div class="modal-footer"> 
     <?php 
      echo $this->Form->button("<i class='icon-plus'></i> Buscar", array('type' => 'submit','id' => 'submit_id', 'class' => 'btn green', 'escape' => false, 'aria-hidden'=>"true")); 
      echo $this->Form->end(); 
     ?>  
    </div> 

ответ

0

Я думаю, что вы ищете может быть установлен с помощью Search Plugin.

Ваш контроллер должен выглядеть примерно так:

class ArticlesController extends AppController { 

    public $components = array(
     'Search.Prg' 
    ); 

    public function find() { 
     $this->Prg->commonProcess(); 
     $this->Paginator->settings['conditions'] = $this->Article->parseCriteria($this->Prg->parsedParams()); 
     $this->set('articles', $this->Paginator->paginate()); 
    } 
} 
0

Перед получить доступ к этим данным, вы должны проверить их существование.

public function indextipo() { 
    $settings = array(
     'paramType' => 'querystring', 
     'limit' => 1, 
     'order' => array('CabAsiento.id_numero' => 'ASC') 
    ); 
    //Check if data are submited 
    if ($this->request->is('post')) { 
     $tipo = $this->request->data('tipo'); 
     $fecha = $this->request->data('fecha_desde'); 
     $settings['conditions'] = array('CabAsiento.tipo_doc' => $tipo, 'MONTH(CabAsiento.fecha)' => $fecha); 
    } 

    $this->CabAsiento->recursive = 0; 
    $this->Paginator->settings = $settings; 
    $this->set('cabAsientos', $this->Paginator->paginate()); 
    $this->layout = 'ingresos'; 
} 
0

нормально после нескольких информационных а сделал это:

if(isset($this->request->data['tipo']) && isset($this->request->data['fecha_desde']) && isset($this->request->data['numero'])) 
    { 
     $this->Session->write('tipo', $this->request->data['tipo']);  
     $this->Session->write('fech', $this->request->data['fecha_desde']); 
     $this->Session->write('num', $this->request->data['numero']); 
    } 

    $tipo = $this->Session->read('tipo'); 
    $fecha = $this->Session->read('fech'); 

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