2015-06-05 23 views
0

1)使用默認的LinkPager設置在索引(GridView)中有幾頁結果。 2)在ActionColumn中調用更新或查看操作。 3)做任何事情,然後點擊麪包屑返回到你來自的GridView中的同一頁面,但它沒有:你回到了第1頁,在某些使用情況下可能會非常煩人(當然可以簡單地和非正常地回去在瀏覽器中,但...)。Yii2:將索引頁面傳遞給麪包屑以查看和更新​​動作

所以工作了某種unelegant基於_GET $解決方案之前,沒有人知道任何LinkPager(或相關)分頁魔法對此有何看法?

在此先感謝

回答

0

似乎沒有LinkPager魔術現在要做到這一點,但我設法找到一個解決辦法,避免控制器調整。麪包屑

parse_str(parse_url(Yii::$app->request->referrer, PHP_URL_QUERY), $params); 

然後:只需編輯view.php/update.php和前面包屑的東西添加

$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => isset($params['page']) ? $params['page'] : '']]; 

現在每次我們在myLabel麪包屑點擊我們將被髮送到在GridView中正確的頁面,我們是從哪裏來的。

主要缺點是沒有超出第二步沒有頁面跟蹤,所以如果你這樣做:index --> view/update/create --> !index,網頁追蹤將會丟失,從而如下更好地使用一個會話變量:

public function actionIndex() 
{ 
    $searchModel = new BibliografiaSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    Yii::$app->session['myPage'] = Yii::$app->request->get('page'); 

    return $this->render('index', [ 
     'searchModel' => $searchModel, 
     'dataProvider' => $dataProvider, 
    ]); 
} 

然後在麪包屑:

$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => Yii::$app->session['myPage']]]; 

這樣頁碼會隨時保存;

0

我認爲這可能對您有用:

$this->params['breadcrumbs'][] = ['label' => 'YourLabel', 'url' => ['index']]; 
$this->params['breadcrumbs'][] = ['label' => Yii::$app->request->get('page'), 'url' => ['index', 'page' => Yii::$app->request->get('page')]]; 
+0

謝謝,但儘管'的Yii :: $ APP->請求 - >獲取(「頁面」)'是有用,因爲它不可用在那裏它不能解決得到這個值轉換成瀏覽/更新的問題。 –

+0

如果它很有用,請將它保留爲您需要的更新管理頁面值並傳遞給控制器​​以便在更新中呈現查看 – scaisEdge

+0

我不是在通過控制器/視圖查找$ _GET(或派生)方法來執行操作我知道),但通過控制器/視圖一般可以獲得這樣的參數。 –