2014-12-01 4 views
0

Доброе утро,SilverStripe 3: removeByName не работает

Я пытался использовать метод removeByName и он не работает. Я в основном пытаюсь скрыть поле в своем DataObject в формах, созданных ModelAdmin, который управляет объектом.

См пример кода ниже:

///DataObject snippet... 
class MyObject extends DataObject{ 
    public static $db = array(
     'Title' => 'Varchar', 
     'Desc' => 'Text', 
     'Template' => 'HTMLText', 
    ); 

    //@Override 
    public function getCMSField(){ 
     $fields = parent::getCMSField(); 
     $fields->removeByName('Template'); /// DOESN'T WORK!!! 
     return $fields; 
    } 

}//class 

Примечание: Я не получаю никаких ошибок. Я просто все еще вижу поле в формах (Add and Edit), как обычно.

Любая помощь приветствуется, спасибо.

+0

Пробовал ли вы именовать поле другим способом, например, «TemplateTest»? – g4b0

+0

Нет, я не изначально. Я только что попробовал, и он все еще не работает. Он по-прежнему отображается в форме только с названием «Template Test». Спасибо за усилия, хотя любые другие идеи более чем приветствуются. – add

+0

Если кто-то может сказать/показать мне, как отлаживать функцию getCMSField, например, делать var_dump в переменной $ fields, которая также была бы полезной. Благодарю. Я пробовал: Debug :: show ($ fields) [не работает] даже с строкой запроса url [? Debug = 1 & isDev = 1] добавлено. Я даже пытался умереть (var_dump ($ fields)), и я ничего не получаю. – add

ответ

0

Хорошо, я нашел проблему.

Я только что перешел API за миллионный раз и признал, что я неправильно назвал эту функцию. См коррекции ниже:

///Correction, forgot to add the 's' at the end of both the function and the parent call. 
public function getCMSFields(){ 
    $fields = parent::getCMSFields(); 
} 

Я могу понять ошибку не генерируется в журналах Apache для функции, потому что это нормально. Но что касается родительского вызова, он должен сгенерировать ошибку, поскольку метод не существует. (Теория: Возможно, поскольку функция никогда не вызывалась, родительский вызов не выполнялся и, следовательно, ошибок [ошибка во время выполнения]).

+0

право, ваша функция 'getCMSField()' (без s) никогда не вызывалась SilverStripe – wmk

+0

Спасибо за проверку. – add

Смежные вопросы