Я создаю небольшой плагин для OctoberCMS, но теперь имею дело с проблемой установки значения по умолчанию для формы настроек.Установка значения по умолчанию в форме настроек return null в Octobercms
Я использовал хранилище базы данных для своих настроек плагина (Backend -> вкладка «Настройки» - вкладка «Мой плагин»), которая работает, неплохо, за исключением того, что я не могу установить значения по умолчанию.
У меня есть fields.yaml
с этим содержанием:
tabs:
fields:
reviews_border_color:
label: 'Field1'
span: left
tab: 'review_sticker'
required: 1
type: text
default: '#F2F2F2'
rating_star_size:
label: 'Field2'
span: left
tab: 'review_sticker'
required: 1
type: number
default: 14
я получить настройки в моих компонентах, как это:
<?php namespace Codedge\TestPlugin\Components;
use Cms\Classes\ComponentBase;
use Codedge\TestPlugin\Models\Settings;
class TestComponent extends ComponentBase
{
public $starSize;
public $borderColor;
public function componentDetails()
{
return [
'name' => 'Test Component',
'description' => '...'
];
}
public function defineProperties()
{
return [];
}
public function init()
{
$this->starSize = Settings::get('rating_star_size'); // not giving a default value when empty, default is 14
$this->borderColor = Settings::get('reviews_border_color'); // not giving a default value when empty, default is '#F2F2F2'
}
}
Я также попытался установить значение по умолчанию, в качестве второго паров в get()
, как предлагается в OctoberCMS docs:
public function init()
{
$this->starSize = Settings::get('rating_star_size', 14); // returns null
$this->borderColor = Settings::get('reviews_border_color', '#F2F2F2'); // returns null
}
Итак, любые предложения, как я могу надежно установить значение по умолчанию, если в поле формы настроек не указано/не введено?
Update:
После некоторого копания aroung я нашел объяснение в методе getSettingsValue()
в system/behaviors/SettingsModel.php
/**
* Get a single setting value, or return a default value
*/
public function getSettingsValue($key, $default = null)
{
if (array_key_exists($key, $this->fieldValues)) {
return $this->fieldValues[$key];
}
return $default;
}
Как существует мое поле в $this->fieldValues
она возвращает его пустым мне вместо возвращения $default
стоимость.
Так что я думал, возвращая значение по умолчанию, если значение поля пуст, не покрывается.
Любые предложения?