Laravel {{ заметки }}

Удобный дебагер Laravel Debugbar:

Ссылка на Github

кратко:

    
composer require barryvdh/laravel-debugbar --dev
//и console
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

  {{app.php
   prov: 
   Barryvdh\Debugbar\ServiceProvider::class,
   facades:
   'Debugbar' => Barryvdh\Debugbar\Facade::class,}}
    

User roles and permissions

Для простой админки новостника перебор, если есть необходимость в гибкой системе контроля доступа юзверов в общей админке - то, что надо.
**почему-то слету не завелось, только после юза миграции вручную, что-то видимо пропустил

        
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePermissionTables extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        $tableNames = config('permission.table_names');
        $columnNames = config('permission.column_names');

        Schema::create($tableNames['permissions'], function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('guard_name');
            $table->timestamps();
        });

        Schema::create($tableNames['roles'], function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('guard_name');
            $table->timestamps();
        });

        Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
            $table->unsignedInteger('permission_id');

            $table->string('model_type');
            $table->unsignedBigInteger($columnNames['model_morph_key']);
            $table->index([$columnNames['model_morph_key'], 'model_type', ]);

            $table->foreign('permission_id')
                ->references('id')
                ->on($tableNames['permissions'])
                ->onDelete('cascade');

            $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
                    'model_has_permissions_permission_model_type_primary');
        });

        Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
            $table->unsignedInteger('role_id');

            $table->string('model_type');
            $table->unsignedBigInteger($columnNames['model_morph_key']);
            $table->index([$columnNames['model_morph_key'], 'model_type', ]);

            $table->foreign('role_id')
                ->references('id')
                ->on($tableNames['roles'])
                ->onDelete('cascade');

            $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
                    'model_has_roles_role_model_type_primary');
        });

        Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
            $table->unsignedInteger('permission_id');
            $table->unsignedInteger('role_id');

            $table->foreign('permission_id')
                ->references('id')
                ->on($tableNames['permissions'])
                ->onDelete('cascade');

            $table->foreign('role_id')
                ->references('id')
                ->on($tableNames['roles'])
                ->onDelete('cascade');

            $table->primary(['permission_id', 'role_id']);
        });

        app('cache')
            ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
            ->forget(config('permission.cache.key'));
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        $tableNames = config('permission.table_names');

        Schema::drop($tableNames['role_has_permissions']);
        Schema::drop($tableNames['model_has_roles']);
        Schema::drop($tableNames['model_has_permissions']);
        Schema::drop($tableNames['roles']);
        Schema::drop($tableNames['permissions']);
    }
}

        
    
Ссылка на Github

.htaccess редирект в public

    
< IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
< /IfModule>
    

Директивы Blade

    
@php  @endphp
@can('permission')  @endcan
@if(condition) @elseif(condition) @else  @endif
@foreach($array as $k => $v) @endforeach
@for ($i = 0; $i < 5; $i++) @endfor
@stack('block') @push('block') @endpush
@include('path_to_template' , ['data' => $data])
@extends('layouts.app')
@yield('content')  @section('content') @endsection
@includeIf('layouts.app', ['data' => $data])

{{-- comment --}}
{{ config('app.name', 'Laravel') }}
{{ config('app.url')}}
{{ url('/') }}
{{ route('login') }}
{{ action('Controller@index' , []) }}
{{ $variable or 'Default' }}
{!! $name !!}
    

Mobile Detect для лары

GitHub link

Пакет для подписок, лайков и блокировок для лары

Хороший функционал, можно относительно быстро прикрутить

GitHub link

Сквозное расшаривание данных

Что то типо сайдбара, или блока для рекламы

    
app/Providers/AppServiceProvider.php

//фасады
    use View;

//в  public function boot() 
    $data = 'some data';
    View::share('sidebar' , $sidebar_projects);
    
//переменная будет доступна в любой части любой вьюхи
    

Добавление своей директивы Blade

Юзал для формата даты , хз почему не carbon

    
app/Providers/AppServiceProvider.php

//фасады
    use Illuminate\Support\Facades\Blade;

//в  public function boot() 
    Blade::directive('datetime', function ($expression) {
        return "< ?php echo ($expression)->format('d.m.Y'); ? >";
    });
//Blade:
    @datetime($entity->created_at)
//аналог: 
    {{ $entity->created_at->format('d.m.Y') }}
    

Пока что не протестил на проде

Ссылка

Интеграция Laravel в WordPress (источник https://nehalist.io)

ссылка

Пакет для модульной разработки на laravel

Ссылка