Это мой первый пакет, опубликованный. Я хотел научиться сделать простой пакет для Laravel. Я много читал о контейнере IOC, о том, как Laravel делает инъекцию зависимостей и т. Д. Этот пакет был вдохновлен великим пакетом Laracasts/Flash!
Бегать
$ composer require linking/flashr
При установке пакета, если вы запускаете Laravel 5.x, вы можете зарегистрировать пакет в AppServiceProvider , как это
<?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);
}
} Если вы запускаете более старую версию Laravel, вы можете редактировать файл app.php и добавить его в вариант providers
' providers ' => [
// ...
Linking Flashr FlashrServiceProvider::class,
];Вы также должны добавить Facade, в файл app.php , под ключом «псевдонимы», добавить
' aliases ' => [
// ..
' Flashr ' => Linking Flashr Facades Flashr::class,
// ..
];В пределах ваших контроллеров вы можете сделать
public function edit ( Post $ post ) {
Flashr:: success ( " The post has been edited " );
return view ( ' post.edit ' , compact ( ' post ' ));
}Flashr выставляет различные функции печатать различные типы вспышек. Вот список функций FlashR:
Flashr::success($message)Flashr::info($message)Flashr::warning($message)Flashr::danger($message)Затем, в ваших взглядах, вы можете включить просмотры поставщиков, выполняя
@include ( ' flashr::flashes ' )Примечание. По умолчанию он использует нотацию в Twitter Bootstrap. Если вы хотите заменить это поведение, просто прочитайте, что будет дальше
Если вы хотите настроить представление, просто сделайте
php artisan vendor:publish --tag=flashr
Затем идите, чтобы справиться с вашими взглядами . Вы должны найти каталог поставщиков. В этом каталоге здесь будет каталог Flashr . Вы можете отредактировать этот файл на все, что хотите. По умолчанию файл выглядит так:
@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 Как вы можете видеть, плагин добавьте два ключа в сеанс: _flashr.type и _flashr.message