Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#2 Laravel » Файловый менеджер для Laravel » 23.04.2018 16:41:38

alexus
Ответов: 1

Привет! Продолжаю осваивать Vue.js

Итак, Файловый менеджер - Фронтенд - Vue, Vuex, Axios, Бэкенд - Laravel
Имеет минимально необходимый набор функций:
- работа с дисками Flysystem,
- несколько вариантов - 1,2-х оконный вариант, плюс одно окно и дерево директорий,
- создание новых папок
- загрузка/скачивание файлов
- копирование/вырезание файлов
- удаление файлов и папок
- переименование файлов и папок
- превью для картинок, с использованием кеша (Intervention Image Cache)
- просмотр картинок
- полно-экранный режим,
- интеграция пока только с CKeditor4

68747470733a2f2f7261772e6769746875622e636f6d2f616c657875736d61692f7675652d6c61726176656c2d66696c652d6d616e616765722f6d61737465722f7372632f6173736574732f6c61726176656c2d66696c652d6d616e616765722e6769663f7261773d74727565

Проверил работу с локальными дисками и ftp, для ftp метод listContents - не отдает дату последнего изменения, пока оставил как есть (как я понял не все серверы отдают ее, и надо запрашивать отдельно). С Amazon S3, и т.д. нетестил, нет в наличии.

Ссылка на репозиторий Laravel File Manager

#3 Re: Laravel 5.x » Sociallite регистрация через соц сеть Вконтакте » 09.03.2018 21:53:45

Vk недавно внесло изменения в свое API, перестали email отдавать, изменили некоторые поля, вместо uid теперь id, короче нужно разбираться. Провайдер пока еще не исправили, так что с работоспособностью могут возникнуть проблемы.

#4 Re: Laravel » Пакет для Laravel - Easy Settings » 21.02.2018 19:49:38

Спасибо большое, что не поленились посмотреть код. Есть несколько вопросов:
- code-style - это имеется в виду оформление кода? Может есть, что толковое почитать по этому поводу?

Ларавел ошибку обернет в Exception, давно не видел таких вызовов.

А можно подробнее, что не правильно? Я хотел, чтоб была ошибка, я не так это сделал?

Одного конфига была мало, который отвечает за кэш?

Я так сделал, чтоб в dev mode cache не работал, чтоб в нескольких местах не приходилось менять значения.

\Cache::forget вызывается всегда, даже если кэш не включен.

Ага, увидел, спасибо.

Upd. Исправил ошибки.

#5 Laravel » Пакет для Laravel - Easy Settings » 21.02.2018 18:31:32

alexus
Ответов: 3

Привет! Хочу поделиться своим пакетом, писал его для себя, но думаю, что может кому-то и пригодится.
Назначение: Позволяет быстро и легко создать структуру для хранения настроек сайта - например строковые данные, небольшие куски текста, булевы значения. Например в шапке у нас есть какой-то слоган, номер телефона и email - можно конечно жестко все это прописать в конфигурационном файле, минус тут если эти данные предполагается изменять, особенно не программисту, а обычному пользователю... можно конечно сделать таблицу в БД и CRUD к ней написать, но к каждой подобной мелочи писать что-то обычно лень. Исходя из этих соображений я написал этот пакет. Постарался сделать его как можно проще для дальнейшего пере-использования.

68747470733a2f2f7261772e6769746875622e636f6d2f616c657875736d61692f6c61726176656c2d7675652d656173792d73657474696e67732f6d61737465722f7372632f6173736574732f6573657474696e67732e6769663f7261773d74727565

Ссылка на GitHub - easy-settings
Правда там описание на GoogleTranslateАнглийском smile, поэтому напишу здесь как ставить.

Установка

composer require alexusmai/easy-settings

Если у вас Laravel ниже версии 5.5, то добавьте в файл конфигурации провайдер и алиас

Alexusmai\EasySettings\EasySettingsServiceProvider::class,
// Alias
'ESettings' => Alexusmai\EasySettings\Facades\EasySettingsFacade::class,

Опубликуйте файл конфигурации самого пакета

php artisan vendor:publish --tag=easy-settings-config

Сама морда пакета написана на Vue.js, поэтому есть два варианта:
- Если у вас админка на Vue, вы можете установить npm пакет laravel-vue-easy-settings - описание по ссылке,
- Или вы можете воспользоваться уже скомпилированным-минимизированным файлом, для этого опубликуйте его

php artisan vendor:publish --tag=easy-settings-assets

Также необходимо выполнить миграцию, которая создаст новую таблицу easy_settings - в которой и будут хранится наши настройки.

php artisan migrate

Теперь настройка, откройте файл /config/easy-settings.php

Да - еще один момент - приложение позволяет хранить языковые конфиги, например у нас мульти-язычный сайт, и слоган в шапке сайта нужно хранить на нескольких языках, для этого есть тип "Lang", при его выборе возможно будет ввести для нужного поля различные переводы(количество языков можно установить в настройках)

/**
     * Список языков (для переводов)
     * add the necessary ones to create additional fields(field type "Lang")
     */
    'languages'     => ['en', 'ru'],

    /**
     * Development mode
     * Show - edit/add settings group
     */
    'dev'           => true,

    /**
     * Save data to laravel cache
     * The cache will not work in development mode
     * set null, 0 - if you don't need cache (default)
     * if you want use cache - set the number of minutes for which the value should be cached
     */
    'cache'         => null,

    /**
     * Middleware
     * Add your middleware name to array -> ['web', 'auth', 'admin']
     * !!!! RESTRICT ACCESS FOR NON ADMIN USERS !!!!
     */
    'middleware'    => ['web', 'auth']

Поясню некоторые моменты:
- dev mode - нужен при разработке, когда вы будете создавать нужные настройки, после его отключения пользователь сможет только редактировать содержимое созданных настроек, а удалить и т.п. что может повлиять на работоспособность сайта, не сможет.
- так как используется БД и все хранится там, то советую использовать кеш, что бы избежать кучи лишних запросов. Вместо null установите время жизни кеша в минутах. В dev mode кэш не работает!
- и самое главное нужно добавить свой middleware в массив, чтобы избежать не-авторизованного доступа к приложению

А теперь откройте view файл, в который вы хотите поместить приложение и добавьте:
- в <head> в meta нужно добавить csrf-token, если у вас он уже не добавлен.

<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">

- пакет использует стили Bootstrap4, если вы уже используете его, то ничего добавлять не надо. Иначе добавьте стили

<link href="{{ asset('vendor/easy-settings/css/esettings.css') }}" rel="stylesheet">

- ну и сам js файл с приложением на Vue

<script src="{{ asset('vendor/easy-settings/js/esettings.js') }}"></script>

А теперь в нужном вам месте добавьте div в котором и будет отрисовываться приложение

<div id="easy-settings-app"></div>

Использование
теперь вы можете создавать нужные группы настроек, сами настройки, задавать правила валидации и т.п.
В коде получать нужные данные можно с помощью фасада:

ESettings::get('groupName.settingsName');
ESettings::get('groupName.settingsName', $defaultValue);

- если выбран тип radios - то возвращается true или false в зависимости от выбранного значения.
- если выбран Lang тип - то результат будет зависить от текущей на момент вызова локали (Используется стандартный механизм Laravel), если нужного языка нет используется "fallback_locale" (/config/app.php)

Seeder
При разработке может потребоваться откатить БД и чтобы не потерять уже все внесенные в БД настройки можно сгенерировать seed файл, в котором они будут содержаться, единственное нужно не забыть это сделать!

php artisan esettings:seed

эта команда создаст seed EasySettingsSeeder, остается добавить его только в общий список (database/seeds/DatabaseSeeder.php)

Надеюсь кому нибудь пригодится!

#6 Re: Laravel 5.x » production.ERROR » 22.02.2017 11:08:09

Да, бывает такое, сам не раз сталкивался.
Причина во времени жизни cookie, 2 часа. И если страница с формой авторизации долго открыта, и нет никаких действий на сайте, то появляется эта ошибка.
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php метод addCookieToResponse

#7 Laravel 4 » Мягкое удаление » 19.01.2015 20:17:41

alexus
Ответов: 0

Здравствуйте.
Исправьте пожалуйста документацию, а именно раздел Eloquent/Мягкое удаление
Теперь для включения мягкого удаления нужно делать так:

use Illuminate\Database\Eloquent\SoftDeletingTrait;

class User extends Eloquent {

    use SoftDeletingTrait;

    protected $dates = ['deleted_at'];

}

Если поле deleted_at создавать не с помощью миграции а каким либо другим методом, то его нужно делать по умолчанию NULL, а то я сначала сделал на подобие created_at/updated_at а там у меня по дефолту было - '0000-00-00 00:00:00'

Окончательно удалить записи из БД у меня тоже не сразу получилось, описываемый способ почему-то не работал(у меня)

$user = User::onlyTrashed()->get();
$user->forceDelete();

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

User::onlyTrashed()->forceDelete();

Подвал раздела