Intereting Posts
Как вы повторяете текущие свойства класса (не унаследованные от родительского или абстрактного класса)? Получайте содержимое корзины за пределами Magento, но в том же домене Флажок, чтобы действовать как переключатель, сначала установите четыре или последние четыре флажка, но не оба – javascript? Необходимо дважды войти в систему. Сессии PHP и проблемы с входами в Chrome и Opera Почему я получаю «неопределенную переменную» в представлении Laravel? PHP генерирует csv, не отправляя правильные новые строки Как сохранить изображение с определенным размером файла? Ошибка сервера 500 – перемещено приложение в подпапку Подтверждение того, что статические переменные PHP не сохраняются в запросах PHPExcel в контроллере Zend2 PHP-анализ недействительного html Как использовать версию PHP для MAMP вместо значения по умолчанию для OSX Как получить запись с контроллера на Ajax laravel 5.2 предотвратить объединение двух конфигураций модуля в Zend Framework 2 Как проверить токен JSON с помощью открытого ключа RSA?

Как отобразить массив, извлеченных данных из базы данных, в раскрывающийся список в CakePHP?

Привет всем Я столкнулся с проблемой присвоения массива (извлеченного из базы данных) в раскрывающемся списке. Вот код

Код контроллера

$skill_rows = $this->Skill->find("all"); $this->set(compact("skill_rows")); 

Код CTP

 $skills = $skill_rows; echo $this->Form->select("Seeker.skills",$skills,array("empty"=>"Select")); 

База данных

 id skill 1 PHP 2 CakePHP 

Я хочу отобразить только столбец навыков в выпадающем списке, но он отображает полную таблицу.

Используйте $this->Skill->find("list"); для возврата массива значений поля первичного ключа, которые можно использовать в раскрывающемся списке. Возможно, вам потребуется указать skill как displayField будет работать правильно.

CakePHP 2

В CakePHP 2 displayField является атрибутом модели: –

 class Skill extends AppModel { public $displayField = 'skill'; } 

В качестве альтернативы вы можете определить столбцы, которые хотите вернуть в списке, когда вы выполняете find() : –

 $this->Skill->find('all', [ 'fields' => [ 'Skill.id', 'Skill.skill' ] ]); 

CakePHP 3

В CakePHP 3 вы можете определить displayField в модели: –

 class SkillsTable extends Table { public function initialize(array $config) { $this->displayField('skill'); } } 

Если вы хотите сделать это в запросе find() в CakePHP 3, вам нужно определить keyField и valueField : –

 $this->Skill->find('list', [ 'keyField' => 'id', 'valueField' => 'skill' ]);