OctoberCMS - Dropdown: сохранить идентификатор по выбранному имени в раскрывающемся списке

Я начинаю октябрь, и я также пытаюсь создать плагин, так что, возможно, нубские вопросы, но я не могу найти рабочий пример через какое-то время поиска в сети, и документация хороша, как и каждый блок, но не хватает «подключения точки" ИМХО... Я понял, как показать связанное имя, связанное с идентификатором, с помощью SimpleTree (возможно, неверным способом).

https://www.screencast.com/t/WDYkfPdMQ https://www.screencast.com/t/4NDc3HHDs

frmArea.yaml

fields:
id:
    label: Número
    oc.commentPosition: ''
    span: auto
    disabled: 1
    type: number
area_id:
    label: 'Parente de'
    oc.commentPosition: ''
    emptyOption: 'Sem valor'
    span: auto
    type: dropdown
    nameFrom: area
area:
    label: Área
    span: full
    oc.commentPosition: ''
    type: text

Area.php

<?php namespace JML\Gkb\Models;

use Model;

   /**
 * Model
 */
class Area extends Model


{
use \October\Rain\Database\Traits\Validation;
use \October\Rain\Database\Traits\SimpleTree;

/*
 * Disable timestamps by default.
 * Remove this line if timestamps are defined in the database table.
 */
public $timestamps = false;


/*
 * Validation
 */
public $rules = [
];

/**
 * @var string The database table used by the model.
 */
public $table = 'jml_gkb_areas';

//Relações

public $hasMany = [
    'area_id' => 'JML\Gkb\Models\Area'
];

/*
public $belongsTo = [
    'area_id' => 'JML\Gkb\Models\Area'
]; */

public function getAreaIdOptions(){
    return Area::all()->listsNested('area', 'id');
}


}

Если я создаю записи, не выбирая никакого отношения к родителю, они создаются (например, те, что на изображении). Если я попытаюсь создать выбор родителя, он сохранится навсегда... Если я попытаюсь обновить запись une без выбора родителем родителя, то же самое произойдет при сохранении.

В течение некоторого времени или, по крайней мере, когда я очищаю кеш, я не могу создать запись без родительского возврата тайм-аута блокировки через некоторое время... Ну, подождав еще немного, я получаю тайм-аут через 300 секунд... Увеличенный идентификатор увеличивается, что что-то значит тыкает в БД... Я подозреваю, что запрос отправляет строку, где требуется число, но не знаю, как этого добиться...

Кто-то может помочь с тем, где найти некоторые связанные примеры или фрагменты или как??? И можно ли добиться того же результата для виджета списка???

ТИА

JL


person JLongo    schedule 03.03.2017    source источник


Ответы (1)


Что ж, решено... Просто покопайтесь в коде черты SimpleTree, чтобы понять, как это работает... Удивительно просто...

<?php namespace JML\Gkb\Models;

использовать Модель;

/**
 * Model
 */
class Area extends Model
{
use \October\Rain\Database\Traits\Validation;
use \October\Rain\Database\Traits\SimpleTree;

/*
 * Disable timestamps by default.
 * Remove this line if timestamps are defined in the database table.
 */
public $timestamps = false;
const PARENT_ID = 'area_id';


/*
 * Validation
 */
public $rules = [
];

/**
 * @var string The database table used by the model.
 */
public $table = 'jml_gkb_areas';

//Relações

public function getAreaIdOptions(){

    return Area::all()->listsNested('area', 'id');

}


}

Просто нужно удалить отношения и добавить

const PARENT_ID = 'area_id';

так как это столбец, имеющий отношение к идентификатору.

Если кто-то знает ответ, как изменить «area_id» по его описанию в виджете списка Builder, пожалуйста, не стесняйтесь комментировать.

ТИА

person JLongo    schedule 04.03.2017