Ich erstellen ein kleines Plugin für die OctoberCMS, aber jetzt beschäftigt sich mit einem Problem, einen Standardwert für ein Formular Einstellungen festzulegen.Festlegen eines Standardwerts für Einstellungen Formular zurück Null in Oktobercms
Ich verwendet Datenbankspeicher für meine Plugin-Einstellungen (Backend -> Einstellungen Registerkarte -> Mein Plugin Registerkarte), die funktioniert, ziemlich gut, außer ich kann keine Standardwerte festlegen.
Ich habe ein fields.yaml
mit diesem Inhalt:
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
ich die Einstellungen in meinen Komponenten wie folgt abrufen:
<?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'
}
}
Ich habe auch versucht, den Standardwert zu setzen, als zweiten param in der get()
Methode wie in der OctoberCMS docs vorgeschlagen:
public function init()
{
$this->starSize = Settings::get('rating_star_size', 14); // returns null
$this->borderColor = Settings::get('reviews_border_color', '#F2F2F2'); // returns null
}
Also irgendwelche Vorschläge, wie ich zuverlässig einen Standardwert einstellen kann, wenn keiner in das Einstellungsformularfeld eingegeben/eingegeben wird?
Update:
Nach einigem Graben aroung ich die Erklärung in der Methode getSettingsValue()
in 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;
}
Als mein Feld existiert in $this->fieldValues
fand es gibt sie leer zu mir stattdessen die $default
der Rückkehr Wert.
Also was ich dachte, den Standardwert zurückgeben, wenn der Feldwert leer ist, wird nicht abgedeckt.
Irgendwelche Vorschläge?