Чек-лист первичной конфигурации 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
Создание 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
перейдя долно быть:
Для поиска: чеклист