Ejemplo n.º 1
0
Archivo: Crud.php Proyecto: nabble/ajde
 /**
  * @param array       $viewParams
  * @param bool|string $persist
  *
  * @return Ajde_Collection_View
  */
 public function getCollectionView($viewParams = [], $persist = 'auto')
 {
     if (!$this->getCollection()->hasView()) {
         $viewSession = new Ajde_Session('AC.Crud.View');
         $sessionName = $this->getSessionName();
         if ($viewSession->has($sessionName)) {
             $crudView = $viewSession->get($sessionName);
         } else {
             $crudView = new Ajde_Collection_View($sessionName, $this->getOption('list.view', []));
             $crudView->setColumns($this->getOption('list.show', $this->getFieldNames()));
         }
         // somehow, when altering crudView, the instance in the session gets updated as well, and we don't want that
         $crudView = clone $crudView;
         if (empty($viewParams)) {
             $viewParams = Ajde::app()->getRequest()->getParam('view', []);
             // if we have params, but no columns, assume a reset
             if (!empty($viewParams) && !isset($viewParams['columns'])) {
                 $viewParams['columns'] = $this->getOption('list.show', $this->getFieldNames());
             }
         }
         $crudView->setOptions($viewParams);
         if ($persist == 'auto' && $this->getOperation() == 'list' || $persist === true) {
             $viewSession->set($sessionName, $crudView);
         }
         $this->getCollection()->setView($crudView);
     }
     return $this->getCollection()->getView();
 }