lcnlcn
(Lcnlcn)
November 7, 2014, 6:58pm
1
Ciao a tutti sono nuovo (lo ripeto sempre) ho creato con gii (crud) la gestione di una tabella (db)
1 passo ) ho la visualizzazione nella griglia dei record interessati circa 200.
2 passo ) scorro la griglia o effettuo il search per trovare il record
3 passo ) clicco sulla griglia per la modifica del record
4 passo ) aggiorno il record
5 passo ) mi visualizza il record modificato
6 passo ) clicco sul breadcrumbs per ritornare nella visualizzazione della griglia
a questo punto chiedo posso evitare di eseguire il passo numero 5 e posso ritornare nella griglia
ma nella pagina dove ho effettuato l’aggiornamento del record ?
ciao e grazie
realtebo
(Mirkotebaldi)
November 7, 2014, 10:26pm
2
Modifica actionUpdate, in particolare il redirect, invece di portare alla action View, manda l’utente alla vista admin
lcnlcn
(Lcnlcn)
November 8, 2014, 4:00pm
3
si cosi ho fatto soltanto che la gridview mi riparte dalla 1 pagina
realtebo
(Mirkotebaldi)
November 10, 2014, 8:33am
4
ah, beh, questa è una storia diversa.
questo è il normale funzionamento del widget CGridView.
Credo, e dico credo, che ci sia la possibilità di usare alcune delle proprietà della gridview per eseguire del javascript al termine dell’aggiornamento (cioè, dopo ogni ricerca, o cambio pagina). A quel punto potresti salvare lo ‘stato’ della grid view in seesion, e quando ritorni sulla pagina, se c’è quello stato salvato, interagire di nuovo con la gridview per chiedergli di ripristinare lo stato.
Sto facendo delle ipotesi, perchè non ho mai provato di persona questa cosa.
Mi interessa molto, a dire il vero credo interesserà anche ad altri. Se riesci, faccelo sapere.
lcnlcn
(Lcnlcn)
November 10, 2014, 9:41am
5
ci proverò ho tempo grazie comunque ti farò sapere
lestat1968
(Baldoromano1968)
November 10, 2014, 12:08pm
6
In passato ho fatto qualcosa del genere usando questa estenzione:
http://www.yiiframework.com/extension/selgridview/
vedi se fa al caso tuo…
realtebo
(Mirkotebaldi)
November 10, 2014, 2:07pm
7
Grazie per averci linkato l’estensione, sembra fenomenale
lestat1968
(Baldoromano1968)
November 10, 2014, 2:30pm
8
Si può usare anche in congiunzione con ERememberFiltersBehavior
nonzod
(Nicola)
November 10, 2014, 3:52pm
10
Puoi saltare direttamente alla pagina che vuoi passando il parametro "page" nella querystring.
"model/admin?page=2"
lcnlcn
(Lcnlcn)
November 10, 2014, 4:04pm
11
in poche parole ho uno stesso controllers che mi visualizza la griglia mi effettua l’aggiornamento inserimento ecc. come faccio a passare una variabile (numero di pagina) tra le varie actions ?
nonzod
(Nicola)
November 10, 2014, 4:25pm
12
La via più veloce che mi viene in mente è modificare la actionColumn update della Grid
GridView::widget([
...
[
'class' => 'app\widgets\grid\ActionColumn',
'template' => '{update}',
'urlCreator' => function ($action, $model, $key, $index) {
return Url::toRoute(['model/update', 'id' => $key, 'param1' => 'foo', 'param2' => 'bar']);
}
]
...
]);
Qui un po’ di info su toRoute
lcnlcn
(Lcnlcn)
November 10, 2014, 5:40pm
13
Nicola Perfetto !!!!!
GridView::widget([
…
[‘class’ => ‘yii\grid\ActionColumn’,
'template' => '{view} {update} {delete}',
'urlCreator' => function ($action, $model, $key, $index) {
return Url::toRoute(['fasigioco/update', 'id' => $key,'page' => $_GET ['page'] ]);
},
nella ActionUpdate del controller
$page = $_GET[‘page’];
if ($page == 0) {
$page = 1;
}
return $this->redirect([‘index’, ‘page’ => $page]);
Visto che la gridview non prevede la visualizzazione di una determinata pagina
ritengo che questa sia una soluzione non so se si tratta della soluzione migliore
comunque funziona !!!
grazie a tutti
alla prossima
lcnlcn
(Lcnlcn)
November 10, 2014, 6:06pm
14
modificato in
[‘class’ => ‘yii\grid\ActionColumn’,
'template' => '{view} {update} {delete}',
'urlCreator' => function ($action, $model, $key, $index) {
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
if ($action == 'update' ) {
return Url::toRoute(['fasigioco/update', 'id' => $key,'page' => $page]);
}
if ($action == 'view' ) {
return Url::toRoute(['fasigioco/view', 'id' => $key,'page' => $page]);
}
if ($action == 'delete' ) {
return Url::toRoute(['fasigioco/delete', 'id' => $key,'page' => $page]);
}
per essere precisi
ciao