Yii2 CRUD и разбиение на страницы

Вы можете выполнить это, обернув каждый канал в goroutine, который «пересылает» сообщения на общий «совокупный» канал. Например:

agg := make(chan string)
for _, ch := range chans {
  go func(c chan string) {
    for msg := range c {
      agg <- msg
    }
  }(ch)
}

select {
case msg <- agg:
    fmt.Println("received ", msg)
}

Если вам нужно знать, с какого канала отправлено сообщение, вы можете перенести его в структуру с какой-либо дополнительной информацией, прежде чем перенаправлять ее на общий канал.

В моем (ограниченном) тестировании этот метод значительно отличается от используемого пакета отражения:

$ go test dynamic_select_test.go -test.bench=.
...
BenchmarkReflectSelect         1    5265109013 ns/op
BenchmarkGoSelect             20      81911344 ns/op
ok      command-line-arguments  9.463s

Код контрольной точки здесь

1
задан user1764431 13 July 2018 в 06:48
поделиться

3 ответа

Просто добавьте следующий код в каждый контроллер actionIndex (), все остальное позаботится

    $searchModel = new CentervideosSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    /*Code insertion block begin*/
    $params = Yii::$app->request->queryParams;      
    if (count($params) <= 1) 
    {
        $params = Yii::$app->session['customerparams'];
        if(isset(Yii::$app->session['customerparams']['page']))
            $_GET['page'] = Yii::$app->session['customerparams']['page'];
        if(isset(Yii::$app->session['customerparams']['per-page']))
            $_GET['per-page'] = Yii::$app->session['customerparams']['per-page'];   
    } 
    else 
    {
        Yii::$app->session['customerparams'] = $params;
    }
    $dataProvider = $searchModel->search($params);
   /*Code insertion block Ends*/
0
ответ дан user1764431 17 August 2018 в 13:31
поделиться
1
ответ дан uldis 17 August 2018 в 13:31
поделиться

Если вам нужно только сохранить страницу, не так ли легко передать параметр page в ваш url-адрес (<model/view>), например <model>/view?id=<id>&page=<page>?

в вашем представлении index.php , отредактируйте свой ActionColumn следующим образом:

    [
        'class' => 'yii\grid\ActionColumn',
        'urlCreator' => function ($action, $model, $key, $index) {
            return \yii\helpers\Url::to([$action, 'id' => $model->id, 'page' => Yii::$app->request->getQueryParam('page', null)]);
        },
    ],

Как вы можете видеть, я получаю параметр страницы из URL-адреса запроса и передаю его кнопкам действий моделей (всем кнопкам, но в вашем вопросе он будет достаточно для кнопки view, конечно)

И когда вы нажимаете на view модель, в нашем контроллере нам нужно получить это значение page и передать его на наш view.php вид (в

Наш ModelController:

    public function actionView($id, $page = null)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
            'page' => $page,
        ]);
    }

И, наконец, представление view.php получит значение page и заполнит index url ( если не null):

/* @var $page int */

$this->title = $model->name;
$this->params['breadcrumbs'][] = ['label' => 'Index', 'url' => ['index', 'page' => $page]];

Поэтому, когда вы нажимаете палитру Index, она откроет страницу, в которую вы ввели.


Некоторые преимущества снова повторяют выполнение сеанса ( @ user1764431):

  • Каждая вкладка может вернуться на свою последнюю страницу
  • Простой и глупый раствор

Некоторые недостатки :

[g1 3]
  • Если вам нужно сохранить некоторые параметры фильтра, url может растягиваться очень долго
  • 1
    ответ дан Yerke 17 August 2018 в 13:31
    поделиться
    • 1
      Это решение является утомительным в целом и требует написать так много строк. Я нашел более маленькое и простое решение. – user1764431 17 July 2018 в 10:45
    Другие вопросы по тегам:

    Похожие вопросы: