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>
.