Per eliminare un elemento da una lista è necessario innanzitutto un pulsante che ci permetta di farlo. Per fare questo andiamo ad aggiungere questo codice in
nomeautore\nomeplugin\controllers\nomecontroller\ _list_toolbars.htm
<button
class="btn btn-default oc-icon-trash-o"
disabled="disabled"
onclick="$(this).data('request-data', {
checked: $('.control-list').listWidget('getChecked')
})"
data-request="onDelete"
data-request-confirm="Sei sicuro?"
data-trigger-type="enable"
data-trigger=".control-list input[type=checkbox]"
data-trigger-condition="checked"
data-stripe-load-indicator>
Elimina
</button>
Abilitiamo i checkbox per la selezione degli elementi in
nomeautore\nomeplugin\controllers\nomecontroller\config_list.yaml
showCheckboxes: true
Ora dobbiamo aggiungere il metodo nel controller che andrà ad eliminare l'elemento che vogliamo cancellare.
Ricordo che il metodo e la data-request del bottone sono relazionati, cioè il nome del metodo inserito nell'argomento data-request sarà il metodo che verrà invocato dalla chiamata ajax al click sul pulsante.
<button
...
data-request="onDelete"
...
>
Elimina
</button>
Nel controller avremo quindi il metodo
public function onDelete()
Il metodo completo sarà qualcosa di questo tipo:
/** Cancella l'elemento dalla lista. Chiamata Ajax **/
public function onDelete() {
/** controlliamo di avere dei valori sui quali ciclare **/
if (($checkedIds = post('checked')) && is_array($checkedIds) && count($checkedIds)) {
/** Cicliamo su ogni id **/
foreach ($checkedIds as $objectId) {
/** Controliamo che ci sia un oggetto con questo id
* Qui possimao aggiungere altri controlli as esempio sui permessi utente.
**/
if (!$object = NOMEDELMIOMODELLO::find($objectId))
continue; /** Se non troviamo l'oggetto proseguiamo **/
/** Se troviamo l'oggetto lo eliminiamo **/
$object->delete();
}
}
/** Ritorniamo la lista di elementi aggiornata così l'utente
* vede che l'elemento è stato effettivamente eliminato
**/
return $this->listRefresh();
}
Chiamando
$this->listRefresh()
forziamo la lista ad aggiornarsi nella vista utente senza che venga ricaricata la pagina.
Lunga vita e prosperità