2016-12-19 2 views
0

Я использую Yii2-advanced-app. Я пишу функцию, которая принимает 2 параметра, используя метод post & отображает результат в Gridview с разбивкой на страницы. Экран, как это - screen ref. Проблема Я столкнулся с этим - При нажатии на кнопку «следующая страница» в постраничной баре, он загружает функцию снова & дает мне пустую форму еще раз, вместо того, чтобы 2-й страницы. Это так: empty form with no results.Yii2: Управление разбиением на страницы в пользовательской функции

Моя функция это -

public function actionReportMisc() 
    { 
     $model = new BanksDetail(); 
     if($model->load(Yii::$app->request->post())) { 
      if($model->Process_ID != '' && $model->Bank_ID != '') { 
       if($model->Process_ID == 1) { 
        $searchModel = new BanksDetailSearch(); 
        $bank = Banks::find()->select('ID')->where(['Account_Number' => $model->Bank_ID])->one(); 
        if(count($bank) == 1) { 
         $queryParams = array_merge(array(),Yii::$app->request->getQueryParams()); 
         $queryParams["BanksDetailSearch"]["Bank_ID"] = $bank->ID; 
         $dataProvider = $searchModel->search($queryParams); 
         $dataProvider->pagination->pageSize = 3; 
         if(count($dataProvider) > 0) { 
          return $this->render('misc', ['model' => $model, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider]); 
         } 
        } else { 
         throw new \yii\web\HttpException(404, 'The selected Account does not exist. Please ensure that you have entered right account no. for Bank/Cashbox.'); 
        } 
       } else if($model->Process_ID == 2) { 
        $searchModel = new CashboxesDetailSearch(); 
        $cbx = Cashboxes::find()->select('ID')->where(['Account_Code' => $model->Bank_ID])->one(); 
        if(count($cbx) == 1) { 
         $queryParams = array_merge(array(),Yii::$app->request->getQueryParams()); 
         $queryParams["CashboxesDetailSearch"]["CashBoxes_ID"] = $cbx->ID; 
         $dataProvider = $searchModel->search($queryParams); 
         if(count($dataProvider) > 0) { 
          return $this->render('misc', ['model' => $model, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider]); 
         } 
        } else { 
         throw new \yii\web\HttpException(404, 'The selected Account does not exist. Please ensure that you have entered right account no. for Bank/Cashbox.'); 
        } 
       } 
      } 
     } else { 
       return $this->render('misc', ['model' => $model]); 
     } 
    } 

Я понимаю, что, когда я нажимаю на «следующей кнопке страницы», функция снова инициализирует форму с пустыми значениями & возвращает пустой FOM. Но нужно предложить сделать это или сделать другой способ сделать это легко. Заранее спасибо.

+0

Почему именно вы используете пользовательскую функцию в первую очередь? Не соответствует ли версия по умолчанию тем, что вам нужно? :) –

+0

, потому что в моем случае я должен взять имя таблицы от пользователя, то есть это будет банк или касса. Я должен показать сетку, у меня нет учетной записи. введенный из выбранной учетной записи (банк/касса). Пожалуйста, скажите мне, как я могу использовать, если таковые имеются. –

+0

Ehm, извините, я не уверен, в чем проблема: / –

ответ

0

Я решил соотв. с помощью get() вместо post(). Это было подходящим для моего сценария, потому что я получаю эти параметры каждый раз во время разбивки на страницы. Спасибо за вашу любезную помощь.