Чек-лист первичной конфигурации Laravel

Делаю для себя буду пополнять

установка

composer create-project laravel/laravel 'имя проекта/папки' --prefer-dist

установка с отключением лимитов по ОЗУ

php -d memory_limit=-1 $(which composer) create-project laravel/laravel 'имя проекта/папки' --prefer-dist

библиотека Unirest (документация: https://github.com/Kong/unirest-php)

composer require mashape/unirest-php

библиотека для работы с Redis (документация: https://github.com/predis/predis)

composer require predis/predis

.env

APP_NAME="Наименование сервиса"
...
APP_URL="https://example.com"
...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=basename
DB_USERNAME=username
DB_PASSWORD=password
...

config/app.php

// ...
'timezone' => 'Europe/Moscow',
// ...
'locale' => 'ru',
// ...
'fallback_locale' => 'ru',
// ...
'faker_locale' => 'ru_RU',
// ...

Изменить URL редиректа для не авторизованных по умолчанию:
открыть файл app/Providers/RouteServiceProvider.php, изменить константу HOME:

// ...
class RouteServiceProvider extends ServiceProvider
{
// ...
    public const HOME = '/home';
// ...
}

Установить пакеты Node JS:

npm install

 

Начиная с 9 версии перешло на Vite:

список ресурсов добавляется в файл vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/css/app.scss',
                'resources/css/auth.scss',
                'resources/css/bx24.scss',
                'resources/js/app.js'
            ],
            refresh: true,
        }),
    ],
});

для импорта изображений в файл resources/js/app.js добавляем:

// ...
import.meta.glob([
    '../images/**',
]);

для добавления на страницу CSS в blade:

...
@vite(['resources/css/app.scss'])
...

пример ссылки на изображение:

...
<img src="{{ Vite::asset('resources/images/logo-white.svg') }}" />
...

команда для подготовки ресурсов к продакшену:

npm run build

 

Cгенерировать ключ приложения

в файле .env в переменной APP_KEY

php artisan key:generate

 

Сессия HTTP в базе данных

выполнить команду для создания миграции таблицы сессий

php artisan session:table

привет объявления таблицы:

//...
Schema::create('sessions', function ($table) {
    $table->string('id')->primary();
    $table->foreignId('user_id')->nullable()->index();
    $table->string('ip_address', 45)->nullable();
    $table->text('user_agent')->nullable();
    $table->text('payload');
    $table->integer('last_activity')->index();
});
//...

выполнить мигруцию

в файле .env поменять парамерт

// ...
SESSION_DRIVER=database
// ...

 

До 8 версии включительно взаимодействие с Webpack

Для создания CSS и JS из ресурсов:

npm run dev

Для запуска форка который ожидает изменение в ресурасах CSS и JS и сразу применяет:

npx mix watch

 

Изменение полей в базе данных

установка:

php -d memory_limit=-1 $(which composer) require doctrine/dbal

пример использования в миграции:

<?php

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

class SubscriptionUpdatesChangeMess extends Migration
{
    public function up()
    {
        Schema::table('subscription_updates', function (Blueprint $table) {
            $table->text('mess')->change();
        });
    }

    public function down()
    {
        Schema::table('subscription_updates', function (Blueprint $table) {
            $table->string('mess')->change();
        });
    }
}

 

Livewire

установка:

php -d memory_limit=-1 $(which composer) require livewire/livewire

создание компонета Livewire

php artisan make:livewire ListComponent

подробнее про Livewire

 

Создание blade файлов шаблона через консольную команду

установить пакет

php -d memory_limit=-1 $(which composer) require theanik/laravel-more-command --dev

можно создавать файлы шаблона, к примеру:

php artisan make:view auth/login

 

Создание класс области видимости (Scope) через консольную команду

установить пакет

php -d memory_limit=-1 $(which composer) require SamAsEnd/laravel-make-scope

для создания выполнить команду, к примеру:

php artisan make:scope ClientScope

будет создать файл app/scopes/ClientScope.php с содержимым:

<?php

namespace App\Scopes;
 
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
 
class ClientScope implements Scope
{
    /**
     * Apply the scope to a given Eloquent query builder.
     *
     * @param  \Illuminate\Database\Eloquent\Builder  $builder
     * @param  \Illuminate\Database\Eloquent\Model  $model
     * @return void
     */
    public function apply(Builder $builder, Model $model)
    {
        // $builder->where('age', '>', 200);
    }
}

 

Библиотека обработки изображений (изменение размера)

документация: https://image.intervention.io/v2

установка

php -d memory_limit=-1 $(which composer) require intervention/image

пример использования (пропорционально уменьшить изображение до 80 пикселей в длинну)

<?php
// ...
use Intervention\Image\Facades\Image;
// ...
            Image::make($image_path_from)
                ->resize(80, null, function ($constraint) {
                    $constraint->aspectRatio();
                    $constraint->upsize();
                })->save($image_path_to);
// ...

 

Перейти с CSS на SCSS

установить пакет SASS:

npm install sass-loader@^12.1.0 sass resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps

переименовать файл resources/css/app.css в resources/css/app.scss

открыть файл webpack.mix.js и изменить

.postCss('resources/css/app.css', 'public/css', [
        //
    ])

на

.sass('resources/css/app.scss', 'public/css', [
        //
    ])

забилдить CSS из SCSS:

npm run dev

 

Tailwind CSS

Документация по Tailwind: https://tailwindcss.com/docs/

установка

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

Открыть файл tailwind.config.js и в content добавить «./resources/**/*.blade.php», «./resources/**/*.js», «./resources/**/*.vue», пример:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./resources/**/*.blade.php",
    "./resources/**/*.js",
    "./resources/**/*.vue",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

В начало файла resources/css/app.scss добавить:

@tailwind base;
@tailwind components;
@tailwind utilities;

 

Font Awesome на SCSS

Скачать библиотеку по адресу: https://fontawesome.com/download

Создать директорию resources/fontawesome/ распаковать туда архив. примерно должно получится:

в том стиле к примеру в resources/css/app.scss добавить:

$fa-font-path: "../webfonts";

// importing core styling file
@import "./fontawesome/scss/fontawesome.scss";

// our project needs Solid + Brands
@import "./fontawesome/scss/solid.scss";
@import "./fontawesome/scss/brands.scss";

 

DaData

установка

php -d memory_limit=-1 $(which composer) require hflabs/dadata

документация: https://dadata.ru/api/

 

Vue.js

установка

npm install --save-dev vue

добавить в webpack.mix.js: .vue({version: 3}) в итоге:

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .vue({
        version: 3
    })
    .sass('resources/css/app.scss', 'public/css', [
        //
    ]);

Пример HelloVue

В файл resources/views/welcome.blade.php вставить:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Laravel Vue</title>
    <script src="{{ asset('js/app.js') }}" defer></script>
</head>
<body>
    <div id="app">
        <hello-vue />
    </div>
</body>
</html>

создать файл resources/js/components/HelloVue.vue с содержимым:

<template>
  <h1>Hello Vue!</h1>
</template>

<script>
export default {
    name: 'HelloVue'
}
</script>

в файл resources/js/app.js вставить:

require('./bootstrap');

import { createApp } from 'vue';
import HelloVue from './components/HelloVue.vue';

createApp({
    components: {
        HelloVue,
    }
}).mount('#app');

забилдить:

npm run dev

перейдя долно быть:

Для поиска: чеклист