Este es mi primer paquete publicado. Quería aprender a hacer un paquete simple para Laravel. He estado leyendo mucho sobre el contenedor del COI, cómo Laravel hace la inyección de dependencia, etc. ¡Este paquete se inspiró en el gran paquete Laracasts/Flash!
Correr
$ composer require linking/flashr
Cuando se instala el paquete, si está ejecutando Laravel 5.x, puede registrar el paquete en AppServiceProvider , como este
<?php
use Linking Flashr FlashrServiceProvider ;
use Illuminate Support ServiceProvider ;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot ()
{
// ...
$ this -> app -> register (FlashrServiceProvider::class);
}
} Si está ejecutando una versión anterior de Laravel, puede editar el archivo App.php y agregar esto en la opción providers
' providers ' => [
// ...
Linking Flashr FlashrServiceProvider::class,
];También debe agregar la fachada, en el archivo app.php , debajo de la clave 'alias', agregar
' aliases ' => [
// ..
' Flashr ' => Linking Flashr Facades Flashr::class,
// ..
];Dentro de tus controladores, puedes hacer
public function edit ( Post $ post ) {
Flashr:: success ( " The post has been edited " );
return view ( ' post.edit ' , compact ( ' post ' ));
}Flashr expone las diferentes funciones para imprimir diferentes tipos de flashes. Aquí hay una lista de funciones flashr:
Flashr::success($message)Flashr::info($message)Flashr::warning($message)Flashr::danger($message)Luego, en sus puntos de vista, puede incluir las vistas del proveedor, haciendo
@include ( ' flashr::flashes ' )Nota: Utiliza, de forma predeterminada, la notación de Bootstrap de Twitter. Si desea reemplazar este comportamiento, solo lea lo que sigue
Si desea personalizar la vista, simplemente haga
php artisan vendor:publish --tag=flashr
Luego, ve aunque tus puntos de vista . Debe encontrar un directorio de proveedores. Dentro de este directorio, un directorio flashr estará aquí. Puede editar este archivo a lo que quiera. Por defecto, el archivo se ve así:
@php
$flashr_type = Session :: has ( ' _flashr.type ' ) ? Session :: get ( ' _flashr.type ' ) : null ;
$flashr_message = Session :: has ( ' _flashr.message ' ) ? Session :: get ( ' _flashr.message ' ) : null ;
@endphp
@if ( $flashr_type && $flashr_message )
< div style = " position : relative " class = " alert alert- {{ $flashr_type } } " role = " alert " >
{{ $flashr_message } }
< span id = " close-flash " onclick = " var el = this.parentElement; el.remove() "
style = " position : absolute ; top : 10 px ; right : 10 px ; font-size : 24 px ; line-height : 10 px ; cursor : pointer " > & times ; </ span >
</ div >
@endif Como puede ver, el complemento agrega dos claves en la sesión: _flashr.type y _flashr.message