CakePHP показывает другое поле, кроме идентификатора в выпадающих списках - PullRequest
3 голосов
/ 14 июня 2011

У меня есть две таблицы: пользователи и фирмы:

class Firm extends AppModel {
    var $name = 'Firm';
    var $hasAndBelongsToMany = 'User';
}

и:

class User extends  AppModel {
    var $name = 'User';
    var $hasMany ='Post';
    var $hasAndBelongsToMany = 'Firm';
}

Я использую scaffold var для отображения всех методов сохранения / просмотра / редактирования и т. Д.Я переопределяю метод add следующим образом:

function add(){
    if (!empty($this->data)) {
        $this->User->create();
        $this->User->save($this->data);
        $this->redirect(array('action'=>'index'), null, true);
    }
    $firms = $this->User->Firm->find('list');
    $this->set('firms', $firms);
}

Все отлично работает, но когда я использую users / add, я получаю выпадающий список с id: "1", "2" и т. Д.
Я бынравится отображать название фирмы, а не идентификатор.Как это сделать?

1 Ответ

6 голосов
/ 14 июня 2011

Вам необходимо установить свойство ' displayField ' в ваших моделях, это то, что Cake использует в различных встроенных функциях, включая find ('list'); `По умолчанию это 'name' или ' поле title 'в вашей базе данных, но я предполагаю, что у вас нет этих полей в базе данных фирм.

Измените это в вашей модели Фирмы:

var $displayField = 'firm_name';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...