Текстовое поле автозаполнения Silverstripe

Я использовал модуль тракторcow's Silverstripe-автозаполнение на веб-сайте для реализации функции автозаполнения в текстовом поле. Однако мне интересно, почему он возвращает поле идентификатора вместо текста (в поле CompanyName).

Текстовое поле автозаполнения Silverstripe

Вот код.

На своей странице я использовал его в форме как:

public function MyForm(){
$fields = FieldList::create();
...
$fields->push(AutoCompleteField::create('StudentGroup_Name', 'Company name *','',null,null,'UserCompany','CompanyName')->setAttribute('required','required'));
...

}

тогда мой объект данных выглядит следующим образом:

class UserCompany extends DataObject{

  private static $db = [
    'CompanyID'      =>  'Int',
    'CompanyName'    =>  'Varchar(512)'
  ];

  private static $summary_fields = [
    'CompanyID'       =>  'CompanyID',
    'CompanyName'     =>  'CompanyName'
  ];

  private static $default_sort = 'CompanyName ASC';
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
145
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я только что проверил исходный код, и displayField по умолчанию - Title. Вы можете изменить свой объект UserCompany, изменив поле CompanyName на Title, или использовать метод setDisplayField.

$fields->push(AutoCompleteField::create('StudentGroup_Name', 'Company name *','',null,null,'UserCompany','CompanyName')->setDisplayField('CompanyName')->setAttribute('required','required'));

Редактировать

Использование функции установки для Title также должно работать. Это означает, что вам не нужно использовать setDisplayField.

class UserCompany extends DataObject {
  ...

  function Title() {
    return $this->CompanyName;
  }
}

Спасибо @Gavin, это то, что вызывает это, но изменение столбца CompanyName может сбивать с толку, поскольку мы используем его в качестве заголовка для импорта данных CSV. Я изменил метод __construct () и установил для полей значение $ sourceFields, проверив его количество. Таким образом, я мог бы также повторно использовать класс в других моих объектах данных. if (count ($ this-> sourceFields) == 1) {$ this-> displayField = $ this-> sourceFields [0]; ...}

myk 14.06.2018 23:07

Другие вопросы по теме