Я управляю «тренером» класса DataObject с помощью ModelAdmin. Тренер имеет многое отношение к моему языку другого класса.Filter ModelAdmin by many_many Отношение
В моем классе «trainer» я манипулирую функцией «searchableFields», чтобы отобразить ListboxField в области фильтров.
public function searchableFields() {
$languagesField = ListboxField::create(
'Languages',
'Sprachen',
Language::get()->map()->toArray()
)->setMultiple(true);
return array (
'Languages' => array (
'filter' => 'ExactMatchFilter',
'title' => 'Sprachen',
'field' => $languagesField
)
);
}
Это работает так, как ожидалось, и показывает мне необходимый список полей. Проблема в том, после выбора 1 или 2 или любой другой языки и отправки формы, я получаю
[Warning] trim() expects parameter 1 to be string, array given
возможно ли это здесь, чтобы фильтр с MANY_MANY отношения? И если да, то как? Было бы здорово, если бы кто-то мог указать мне в правильном направлении.
Update:
Полное сообщение об ошибке: http://www.sspaste.com/paste/show/56589337eea35
Trainer Класс: http://www.sspaste.com/paste/show/56589441428d0
спасибо за ваш ответ, вы когда-нибудь использовать его, как это? к сожалению, это порождает синтаксическую ошибку в '' поле '=> self :: languagesField() '. Думаю, вам не позволено вызывать функцию здесь? –
Можете ли вы скопировать в само сообщение об ошибке. Я сделал это аналогичным образом, прежде чем да. SilverStripe сложно отлаживать, не видя при этом кода. –
В противном случае игнорируйте метод languagesField() и просто поместите свое объявление поля прямо в поле «field» массива. Как правило, SilverStripe хочет только имя класса для данного поля. Итак, попробуйте с помощью поля ListboxField или Dropdown, так как я не уверен, что он достаточно умен, чтобы принимать несколько значений из списка. –