Skip to content

Instantly share code, notes, and snippets.

@Titoratus
Titoratus / [OctoberCMS] Загрузка файлов через Frontend для модели
Created Jun 10, 2019
[OctoberCMS] Загрузка файлов через Frontend для модели
View [OctoberCMS] Загрузка файлов через Frontend для модели
function onSubmit()
{
// get all post data
$data = post();
$form = YourModel::make($data);
// set specific field as we need
$form->form_files = Input::file('form_files');
$form->save();
// Note:
@Titoratus
Titoratus / [OctoberCMS] Vue.js
Last active Feb 10, 2020
[OctoberCMS] Vue.js
View [OctoberCMS] Vue.js
Устанавливаем October (установщиком или через Composer)
В папке с October устанавливаем пакет vue-cli (npm i -g vue-cli) и создаём vue приложение (vue init webpack my-app),
внутри папки my-app выполняем (npm i) и в итоге npm run dev (консоль и так подскажет)
Внутри my-app - npm i --save-dev axios (для запросов get, post к api)
Axios — это JavaScript-библиотека для выполнения либо HTTP-запросов в Node.js, либо XMLHttpRequests в браузере.
.htaccess (шоб axios мог получать данные):
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
@Titoratus
Titoratus / [OctoberCMS] Связь таблиц
Created Apr 27, 2019
[OctoberCMS] Связь таблиц
View [OctoberCMS] Связь таблиц
Если нужна связь типа "Запись имеет комментарий(ии)", то есть без pivot таблицы,
а просто таблица комментариев имеет доп. столбец с id записи, то:
1. модели Запись прописываем:
public $hasMany = [
'comments' => 'author\myplugin\Models\Comment'
];
2. Контроллеру Записи прописываем:
public $implement = ['Backend\Behaviors\RelationController'] и public $relationConfig = 'config_relation.yaml';
@Titoratus
Titoratus / [OctoberCMS] Кастомные кнопки в preview, update, create
Created Apr 25, 2019
[OctoberCMS] Кастомные кнопки в preview, update, create
View [OctoberCMS] Кастомные кнопки в preview, update, create
В любой непонятной ситуации - dd($this).
Например, кнопка редактирования на странице preview:
<a href="<?= Backend::url('estar/hotel/records/update', $this->params[0]) ?>" class="btn btn-default">
Редактировать
</a>
@Titoratus
Titoratus / [OctoberCMS] Изменение поля на страницах update, preview, create
Created Apr 25, 2019
[OctoberCMS] Изменение поля на страницах update, preview, create
View [OctoberCMS] Изменение поля на страницах update, preview, create
В fields.yaml отдельно прописать my_field@update - то есть состояние кнопки при update.
Пример:
my_field:
type: text
...
my_field@update:
type: text
disabled: true
...
@Titoratus
Titoratus / [OctoberCMS] Cross reference table
Created Apr 21, 2019
[OctoberCMS] Cross reference table
View [OctoberCMS] Cross reference table
https://octobercms.com/docs/database/relations#many-to-many
Таблица, которая нужна для связывания записей одной таблицы с записями другой называется сross reference table.
Нужно получить значение из другой связанной таблицы? Прописываем для той модели, записи которой выводим:
public $belongsToMany = [
'phones' => ['estar\hotel\Models\Phone', 'table' => 'estar_hotel_users_phones']
];
@Titoratus
Titoratus / [OctoberCMS] Создание страницы в backend
Created Apr 21, 2019
[OctoberCMS] Создание страницы в backend
View [OctoberCMS] Создание страницы в backend
Страница - controller и папка с названием этого контроллера. Внутри: index.htm
Страница с выводом чего-то и формой: уже нужна модель, в которой прописывается таблица, из которой берём данные, переменные (например, $timestamps = false означает, что убираем поля created_at, updated_at при insert), валидация полей формы.
Создаётся папка с таким же названием, что и модель. В ней 2 файла: columns.yaml (столбцы таблицы, которая выводится в админке) и fields.yaml (поля формы при добавлении новой записи)
@Titoratus
Titoratus / [OctoberCMS] Валидация нескольких полей за один раз
Last active Apr 21, 2019
[OctoberCMS] Валидация нескольких полей за один раз
View [OctoberCMS] Валидация нескольких полей за один раз
use \October\Rain\Exception\ValidationException;
class myModel extends Model
{
public function beforeSave()
{
// date_in, date_out - поля с датами!
$start = $this->date_in;
$end = $this->date_out;
$check = Db::table('mytable')
@Titoratus
Titoratus / [OctoberCMS] Как изменить текст switchbox'а
Last active Apr 21, 2019
[OctoberCMS] Как изменить текст switchbox'а
View [OctoberCMS] Как изменить текст switchbox'а
В билдере этих свойств нет, поэтому лезем в fileds.yaml в папке модели и добавляем (свой текст):
on: Да
off: Нет
@Titoratus
Titoratus / [OctoberCMS] Значение purged поля ПОСЛЕ создания модели
Last active Apr 21, 2019
[OctoberCMS] Значение purged поля ПОСЛЕ создания модели
View [OctoberCMS] Значение purged поля ПОСЛЕ создания модели
class MyModel extends Model
{
...
public function afterCreate()
{
// вот значение purged поля _extras
// подчкёркивание (_) означает, что это поле (которое в форме) не будет сохраняться в данной модели MyModel.
// но я хочу получить его для сохранения в другую модель.
$val = $this->getOriginalPurgeValue('_extras');
You can’t perform that action at this time.