2016-06-05 4 views
0

10 월 CMS에 대한 약간의 플러그인을 만들었지 만 이제는 설정 양식의 기본값을 설정하는 문제를 해결합니다.설정 양식에 기본값을 설정하면 10 월에 null이 반환됩니다.

내 플러그인 설정 (백엔드 -> 설정 탭 -> 내 플러그인 탭)에 데이터베이스 저장소를 사용했는데 기본 값을 설정할 수 없다는 점을 제외하면 매우 효과적입니다.

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' 
    } 

} 

나는 또한에서 두 번째 PARAM로, 기본값을 설정하려고

나는이 콘텐츠와 fields.yamlOctoberCMS docs에 제안 된 get() 방법 :

public function init() 
{ 
    $this->starSize = Settings::get('rating_star_size', 14); // returns null 
    $this->borderColor = Settings::get('reviews_border_color', '#F2F2F2'); // returns null 
} 

아무 것도 지정되지 않았거나 설정 양식 필드에 입력되지 않은 경우 신뢰할 수있는 기본값을 어떻게 설정할 수 있습니까?

업데이트 : $this->fieldValues

/** 
* 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; 
} 

내 필드가 존재하는 system/behaviors/SettingsModel.php의 방법 getSettingsValue()의 설명을 발견 aroung 뒷조사 후

는 그것을 $default을 반환하는 대신 비어 나에게 반환 값.

그래서 필드 값이 비어 있으면 기본값을 반환한다고 생각했는데 적용되지 않습니다.

제안 사항?

답변

0

Github의 OctoberCMS 팀과상의 한 후 현재의 행동은 의도적이거나 버그가 아니며 - https://github.com/octobercms/october/issues/2094을 참조하십시오. 이 행동을 바꾸기위한 고려 사항이있을 수 있지만 이것은 또 다른 이야기입니다. 당신이 initSettingsData 기능을 사용하지 않는 이유는

1

, 당신은 다음과 같이 사용할 수 있습니다 :

class Settings extends Model 
{ 
    public $implement = ['System.Behaviors.SettingsModel']; 

    // A unique code 
    public $settingsCode = 'my-settings'; 

    // Reference to field configuration 
    public $settingsFields = 'fields.yaml'; 

    public function initSettingsData() 
    { 
     $this->admin_email = '[email protected]'; 
     $this->admin_name = 'Walid Ammar'; 
     $this->other_settings = 'other value'; 
    } 
}