janka74
(Giancarloalbanese 74)
January 19, 2012, 3:20pm
1
Quando con gii realizziamo la logica di CRUD,
vengono implementati i controller
actionAdmin()
che si preoccuperà di gestire la griglia (zii.widgets.grid.CGridView)
questa griglia ha la possibilità di eliminare dei record.
Immagino che in qualche modo via ajax riesca a richiamare il controller dedicato
actionDelete() e la cosa bella è che la pagina non viene ricaricata, ma viene eseguito il refresh della sola griglia
Infine c’è il controller actionIndex() che gestisce l’elenco dei record (zii.widgets.CListView).
e per alcuni aspetti è simile alla griglia, tant’è che sono riuscito a trasportare la logica di ricerca.
Ora la domanda è questa:
Secondo voi è possibile implementare anche qui la stessa logica ajax per eliminare i record ?
Mi piacerebbe riuscire ad implementare in _view.php un bel tasto per eliminare il record in questione.
zaccaria
(Matteo Falsitta)
January 23, 2012, 7:43am
2
Certo che si puo’.
Come gia’ discusso in un altro post:
$('.search-form form').submit(function(){
$.fn.yiiGridView.update('call-rcms-grid', {
data: $(this).serialize()
});
return false;
});
Fa il refresh della grid, analogamente
$('#buttonID').click(function(){
$.fn.yiiListView.update('call-rcms-grid');
return false;
});
Anche se non e’ efficientissimo, fai una richiesta ajax per la cancellazione, e all’onsuccess chiama $.fn.yiiListView.update(‘call-rcms-grid’);, vedrai che ti aggiorna la listView.
janka74
(Giancarloalbanese 74)
January 24, 2012, 2:34pm
3
Si, forse ero stato io stesso ad aprire quel topic.
E grazie l’aiuto di mombda ero riuscito ad implementare il search anche sul [color="#1C2837 "][size=“2”]CListView[/size][/color]
[color="#1C2837 "][size="2"]Però non riesco ancora a sbrogliarmela.[/size][/color]
[color="#1C2837 "][size="2"]E spiego meglio il mio ostacolo:[/size][/color]
[color="#1C2837 "][size="2"]CGridView è in grado di mostrare anche il tasto per eliminare i record, mentre con [/size][/color][color="#1C2837 "][size="2"]CListView non so come si faccia.[/size][/color]
[color="#1C2837 "][size="2"]Ho anche trovato un esempio abbastanza completo in proposito:[/size][/color]
[color="#0000EE "]http://www.packtpub …-zii-components [/color]
[color="#0000EE "][u]
[/u][/color]
[color="#1C2837 "][size="2"]Come faccio per far comparire nella _view.php il tasto elimina?[/size][/color]
[color="#1C2837 "][size="2"]Al momento ho provato a copiare il link di cancellazione record della Grid e metterlo nella _view.php,[/size][/color]
[color="#1C2837 "][size="2"]
<a class="delete" title="Cancella" href="/.../controller/delete/<?php echo $data->id; ?>">
<img src="/prova/demo/assets/296b5f48/gridview/delete.png" alt="Cancella"></a>
<br />
[/size][/color]
in modo tale che i link escano in questo formato:
http :// bla bla/controller/delete/173
[color="#1C2837 "][size=“2”]ma quando clicco, mi restituisce l’errore 400[/size][/color]
[size="2"][color="#1c2837 "]Invalid request. Please do not repeat this request again.[/color][/size]
sensorario
(Sensorario)
January 26, 2012, 9:31am
4
Ho notato due cose nel tuo codice:
Nel primo caso ti segnalo che hai messo 3 punti.
Nel secondo caso, fai attenzione: stai usando la cartella assets. le cartelle assets possono cambiare.
zaccaria
(Matteo Falsitta)
January 27, 2012, 6:26am
5
Non fare mai i link come a href ma usa sempre la funzione CHtml::link.
Se sfogli nella documentazione troverai che puoi fare un link che fa una post request/
Tu stai facendo una delete con una get request, e nel codice di actionDelete c’e’ scritto di restituire errore se non e’ un post.
Impara a usare bene i componenti base del framework (e soprattutto generare gli url con le funzioni preposte).