Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Привет! Продолжаю осваивать Vue.js
Итак, Файловый менеджер - Фронтенд - Vue, Vuex, Axios, Бэкенд - Laravel
Имеет минимально необходимый набор функций:
- работа с дисками Flysystem,
- несколько вариантов - 1,2-х оконный вариант, плюс одно окно и дерево директорий,
- создание новых папок
- загрузка/скачивание файлов
- копирование/вырезание файлов
- удаление файлов и папок
- переименование файлов и папок
- превью для картинок, с использованием кеша (Intervention Image Cache)
- просмотр картинок
- полно-экранный режим,
- интеграция пока только с CKeditor4
Проверил работу с локальными дисками и ftp, для ftp метод listContents - не отдает дату последнего изменения, пока оставил как есть (как я понял не все серверы отдают ее, и надо запрашивать отдельно). С Amazon S3, и т.д. нетестил, нет в наличии.
Ссылка на репозиторий Laravel File Manager
Vk недавно внесло изменения в свое API, перестали email отдавать, изменили некоторые поля, вместо uid теперь id, короче нужно разбираться. Провайдер пока еще не исправили, так что с работоспособностью могут возникнуть проблемы.
Спасибо большое, что не поленились посмотреть код. Есть несколько вопросов:
- code-style - это имеется в виду оформление кода? Может есть, что толковое почитать по этому поводу?
Ларавел ошибку обернет в Exception, давно не видел таких вызовов.
А можно подробнее, что не правильно? Я хотел, чтоб была ошибка, я не так это сделал?
Одного конфига была мало, который отвечает за кэш?
Я так сделал, чтоб в dev mode cache не работал, чтоб в нескольких местах не приходилось менять значения.
\Cache::forget вызывается всегда, даже если кэш не включен.
Ага, увидел, спасибо.
Upd. Исправил ошибки.
Привет! Хочу поделиться своим пакетом, писал его для себя, но думаю, что может кому-то и пригодится.
Назначение: Позволяет быстро и легко создать структуру для хранения настроек сайта - например строковые данные, небольшие куски текста, булевы значения. Например в шапке у нас есть какой-то слоган, номер телефона и email - можно конечно жестко все это прописать в конфигурационном файле, минус тут если эти данные предполагается изменять, особенно не программисту, а обычному пользователю... можно конечно сделать таблицу в БД и CRUD к ней написать, но к каждой подобной мелочи писать что-то обычно лень. Исходя из этих соображений я написал этот пакет. Постарался сделать его как можно проще для дальнейшего пере-использования.
Ссылка на GitHub - easy-settings
Правда там описание на GoogleTranslateАнглийском , поэтому напишу здесь как ставить.
Установка
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)
Надеюсь кому нибудь пригодится!
Да, бывает такое, сам не раз сталкивался.
Причина во времени жизни cookie, 2 часа. И если страница с формой авторизации долго открыта, и нет никаких действий на сайте, то появляется эта ошибка.
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php метод addCookieToResponse
Здравствуйте.
Исправьте пожалуйста документацию, а именно раздел 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();