# Acciones
Las acciones son botones que se muestran en distintas vistas y sirven de enlace sobre la propia vista o elemento o pueden usarse para realizar acciones como iniciar un proceso, exportar datos, etc.
Por ejemplo, existe la acción CreateAction
que muestra un botón / enlace a la vista de creación, o la acción BackToIndexAction
que te lleva de vuelta a la vista principal de listado de datos.
# Mostrar / ocultar acciones
Lo más común es que ciertas acciones sólo puedan aparecer en ciertas vistas.
Por ejemplo, la acción CreateAction
suele aparecer en la vista de listado de datos, pero no en la vista de creación / edición.
Para ello disponemos de los siguientes modificadores:
hideOnList()
hideOnForm()
hideOnCreate()
hideOnEdit()
# Acciones de sección
Son acciones que se aplican a una sección del backoffice.
# CreateAction
Muestra un botón que te lleva a la vista de creación.
Como primer parámetro se le pasa el texto que mostrará el botón.
CreateAction::make('Crear país')
# BackToIndexAction
Muestra un botón que te devuelve a la vista principal del listado de datos.
Por defecto, si no se proporciona ningún parámetro, se mostrará el texto "Volver".
BackToIndexAction::make()
Si se desea otro texto diferente, puede indicarse mediante el primer parámetro:
BackToIndexAction::make('Volver al listado')
# CustomAction
Muestra un botón con título, icono y una acción personalizada.
El útil para lanzar acciones personalizadas como exportar datos, iniciar un proceso, etc.
Como primer parámetro se especifica el título del botón.
Como segundo parámetro una función con la acción a realizar.
CustomAction::make('Exportar', function () {
// Realizamos una acción
})->setIcon('download-line')
# Acciones de elemento
Son acciones que se aplican a cada item del listado de datos, por ejemplo para editar un registro.
# EditItemAction
Muestra un botón con icono para ir a la vista de edición de un registro.
EditItemAction::make()
# DeleteItemAction
Muestra un botón con icono para eliminar un registro.
Antes de producirse la eliminación, se muestra un mensaje de confirmación.
EditItemAction::make()
# CustomItemAction
Es una acción totalmente personalizable.
El icono puede ser personalizado mediante la función setIcon
(ver Personalizar icono).
El código a ejecutar se define mediante la función execute
, en una función que recibirá un objeto de tipo Model
con los datos del registro asociado:
CustomItemAction::make()
->setIcon('check-line')
->execute(function (Model $item) {
$item->active = false;
$item->save();
})
Por defecto se redirige a la misma pantalla de listado de datos, pero puede modificarse retornando una RedirectResponse
en la propia función:
CustomItemAction::make()
->setIcon('check-line')
->execute(function (Model $item) {
$item->active = false;
$item->save();
return redirect('home');
})
# Ejecutar acción como AJAX
Es ocasiones es más usable realizar ciertas acciones por ajax, sin tener que recargar la página.
Para ello se puede usar el modificador asAjax()
:
CustomItemAction::make()
->setIcon('check-line')
->execute(function (Model $item) {
$item->active = false;
$item->save();
})->asAjax()
Ajax y redirección
Tener en cuenta que si la acción se ejecuta mediante ajax, no se debe retornar ninguna respuesta en la función.
Ajax e iconos dependientes de los datos
Si el icono de la acción se ha establecido mediante una función (ver Icono dependiente de los datos), el sistema se encarga automáticamente de mostrar el icono correspondiente justo después de ejecutarse el código.
# Parámetros adicionales
En alguna ocasión puede ser necesario que el enlace del botón deba tener algún parámetro en la url.
Por ejemplo, en el caso del CreateAction
, por defecto la url termina en /create
. Si quisieramos pasar un parámetro como por ejemplo /create?active=0
podriamos definirlo mediante la función setParameter()
:
CreateAction::make('Crear país')->addParameter('active', 0)
# Personalizar icono
Por defecto las acciones tienen un icono predefinido. Éste puede ser modificado por otro mediante la función setIcon()
, pasando un identificador de icono.
Los identificadores corresponden con los iconos de la librería Remix Icon (opens new window). En la web oficial puede encontrarse el listado completo de iconos pueden ser usados.
Por ejemplo, si quisieramos usar el siguiente icono:
Utilizariamos como identificador star-line
:
EditItemAction::make()->setIcon('star-line')
# Icono dependiente de los datos
En el caso de las acciones de elemento, como EditItemAction
, DeleteItemAction
o CustomItemAction
, el icono puede variar dependiendo de cierto valor en los datos.
Por ejemplo, mostrar un icono u otro según si el campo active
es 1
o 0
. Para ello, en vez de pasar un string
a la función setIcon()
, se pasará un callback, que recibirá un objeto Model
con los datos del registro asociado:
CustomItemAction::make()->setICon(function (Model $item) {
return $item->active == 1 ? 'eye-line' : 'eye-off-line';
})
← Filtros Validación →