API-module
Критически важные изменения
-
[Auth] В таблицу
auth_codes добавить новое поле ip:
ALTER TABLE
`auth_codes`
ADD
COLUMN `ip` VARCHAR(255) NOT NULL DEFAULT ''
AFTER
`code`;
-
[Checker] Проверка на права доступа теперь бросает исключение
ResponseException при ошибке, его можно отловить если вам необходимо при ошибке выполнить что-то своё, если исключение не поймать оно уйдёт в ядро и там превратится в обычный json-ответ с ошибкой в виде сообщения исключения:
try {
$this->checker->run([
'role' => [
'page' => 'example',
'access' => 'read',
],
]);
return true;
} catch (ResponseException $e) {
LogException::write($this->log, $e);
return false;
}
$this->checker->run([
'auth' => '',
'role' => [
'page' => 'example',
'access' => 'delete',
],
]);
$this->response->setData((new ActionRemove($this->dic))->run(
$this->request->attributes->get('id')
));
return $this->response;
catch (ResponseException $e)
$this->response->setData(Response::exception($e));
$this->response->send();
-
[Configs] Переопределение настроек выполняется в каталоге
/app/Overrides/Configs при помощи yaml-файлов, подробности смотрите здесь.
-
[Console] В метод
getDIC необходимо передать параметр string $path_root.
-
[Console] БД не инициализируется в конструкторе, необходимо отдельно стартовать при необходимости:
(new Database())->addConnection($dic['config']['database']['mysql'])->connect();.
-
[Controller] В классах расширяющихся от класса
Lemurro\Api\Core\Abstracts\Controller метод start вместо вызова $this->response->send(); должен возвращать return $this->response;.
-
[Core] Необходимо в файле
/public/index.php передать параметр string $path_root в ядро new Core(__DIR__ . '/../').
-
[Database] Библиотека
j4mie/idiorm заменена на illuminate/database, необходимо пройти по коду и заменить ORM:: на DB:: (фасад для класса Capsule), основной список методов “было\стало”:
-
for_table() >>> table()
-
select_many() >>> select()
-
where_null() >>> whereNull()
-
order_by_asc() >>> orderBy()
-
find_one() >>> first(), если ничего не найдено вернёт null
-
find_many() >>> get(), для проверки на данные можно вызвать метод count()
-
find_array() >>> используйте get() и преобразуйте каждый элемент в цикле с использованием type cast (array) $item, но посмотрите может вам это и не нужно вовсе, можно и в таком виде отдать в ответ
-
as_array() >>> (array) $record, используем магию type cast
-
create() >>> insert() или insertGetId()
-
save() >>> необходимо отдельно строить запрос с методом update()
-
ORM::get_db()->beginTransaction() >>> DB::beginTransaction()
-
ORM::get_db()->commit() >>> DB::commit()
-
ORM::get_db()->rollBack() >>> DB::rollBack()
-
[DIC] В связи с удалением DIC-элемента
$this->dic['checker'] необходимо в классах расширяющихся от классов Lemurro\Api\Core\Abstracts\Controller и Lemurro\Api\Core\Helpers\File\FileChecker использовать вместо него свойство $this->checker.
-
[EmailTemplates] Переопределение шаблонов для писем выполняется в каталоге
/app/Overrides/Configs/templates при помощи html-файлов, подробности смотрите здесь.
-
[Jobby] В конструкторе указать параметр
string $path_root.
-
[LoggerFactory]
LoggerFactory::create() заменить на:
use Lemurro\Api\Core\Helpers\LoggerFactory;
$logfactory = $this->dic['logfactory'];
$log = $logfactory->create('LogName');
либо упрощённый вариант
use Monolog\Logger;
$log = $this->dic['logfactory']->create('LogName');
-
[Mailer] Конструктор вместо переменных
string $header и string $footer теперь принимает переменную string $template в которой находится полный шаблон письма: шапка, подвал и переменная __BODY__, если вы использовали переопределение шапки и подвала, пожалуйста посмотрите новый формат шаблона.
Необязательные изменения
WEB-module
Критически важные изменения
-
[Style] Цвета серии
-brand удалены, необходимо заменить на что-то другое.
-
[Style] Классы серии
m-badge удалены, необходимо заменить их на label.
-
[Style] Классы серии
m-- удалены, необходимо заменить их на соответствующие классы.
-
[Style] Классы серии
m-checkbox удалены, необходимо убрать из классов префикс m-.
-
[Style] Классы серии
m-radio удалены, необходимо убрать из классов префикс m-.
-
[Style] У элементов
button с классом m-btn--icon можно убрать этот класс и изменить вёрстку внутри:
<button type="button" class="btn btn-primary m-btn--icon" onclick="myfunc()">
<span>
<i class="fas fa-plus"></i>
<span>Добавить</span>
</span>
</button>
<button type="button" class="btn btn-primary" onclick="myfunc()">
<i class="fas fa-plus"></i>
Добавить
</button>
-
[SweetAlert2] Вместо вызова
swal() необходимо использовать вызов Swal.fire().
-
[Users] На вкладке
Ключи доступа изменена вёрстка и добавлено сообщение об отсутствии ключей, новую вёрстку можно взять в файле auth_keys.html.
-
[Users] Добавлено новое системное поле
email
- Добавить поле в схему таблицы
info_users:
ALTER TABLE `info_users` ADD `email` VARCHAR(255) NULL AFTER `roles`;
- В файле
/src/html/pages/users/form.html необходимо добавить поле:
<div class="form-group">
<label>Email</label>
<input type="text" name="email" title="Email" class="form-control js-user-id-1" />
</div>
Необязательные изменения
-
[Style] Теперь кнопки с классом
btn-secondary слишком тёмные и имеет смысл поменять их на btn-light.
-
[Style] Для кнопок с выпадающим меню и классом
btn-secondary можно поменять этот класс на btn-outline-light.
-
[Style] В выпадающих меню, где есть элементы с иконками можно увеличить отступ справа от иконки добавив новый класс
mr-3 в элемент иконки <i>.