2017-12-21 18 views
0

내 홈 페이지에서 $ slideImages에 대한 $ many_many 배열을 만들었습니다. 많은 것을 읽고 시도한 후에도 템플릿에 이미지가 나타나기를 원하는 순서를 CMS에 알릴 수 없습니다. 기본적으로 그들은 내가 생각하는 업로드 날짜별로 정렬됩니다.silverstripe에서 many_many의 일부로 이미지를 정렬하는 방법은 무엇입니까?

나는 gridfield를 만들 수 있지만 정렬 번호를 입력 할 수있는 텍스트 필드를 얻을 수없는 것 같습니다. 지금은 방금 gridFieldComponent로 안내하는 토끼 흔적을 마쳤지 만 오류가 발생하고 문서가 도움이되지 않습니다.

use SilverStripe\Assets\Image; 
use SilverStripe\AssetAdmin\Forms\UploadField; 
use SilverStripe\Forms\TextField; 
use SilverStripe\Forms\GridField\GridFieldComponent; 
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor; 
use SilverStripe\Forms\GridField\GridField; 

class HomePage extends Page 
{ 
    private static $db = []; 

    private static $has_one = []; 

    private static $many_many = [ 
     'SliderImage'=>Image::Class 
    ]; 

    private static $owns = [ 
     'SliderImage' 
    ]; 
    private static $many_many_extraFields= [ 
     'SliderImage'=>array(   
      'Sort'=>'Int' 
     )   
    ]; 

    public function getCMSFields(){ 
     $fields = parent::getCMSFields(); 

     $fields->addFieldToTab('Root.Attachments', UploadField::create('SliderImage', 'Sllider Images')->setFolderName('HomePageSlides')); 

     $gridFieldConfig = GridFieldConfig_RelationEditor::create()->addComponents(

      new GridFieldComponent(TextField('Sort')) 
    ); 

     $gridField = new GridField("SliderImage", "Slider Image", $this->SliderImage()->sort('Sort'), $gridFieldConfig); 

     $fields->addFieldToTab("Root.Attachments", $gridField); 

     return $fields; 
    } 
} 

내가 오류는 다음과 같습니다

"Uncaught Error: Cannot instantiate interface SilverStripe\Forms\GridField\GridFieldComponent"

+2

나는 새로운 GridFieldComponent'의 새 (텍스트 필드 ('정렬'))'그리워; BTW : 나는':: create()'구문을 사용할 것이다. 예 : 'GridFieldComponent :: create (TextField :: create ('Sort'))' – wmk

+3

BTW2 : dev 환경에 xdebug를 설치하면 모든 오류 메시지와 함께 멋진 백 트레이스를 얻을 수 있습니다. 그러면 코드에서 오류가 발생한 위치를 볼 수 있습니다. 코드가 프레임 워크 클래스에서 오류를 일으킬 때 매우 편리합니다 ... – wmk

답변

1

WMK의 의견에 따라 경찰, 당신이 당신의 Sort 필드에 대한 TextField 초기화에 new 또는 ::create가 누락되었습니다.

은 다음과 같아야합니다 더 나은 아직

new GridFieldComponent(new TextField('Sort')) 

또는 :

GridFieldComponent::create(TextField::create('Sort'))