Если я правильно вас понимаю, значение и отображаемое название страны должны совпадать.Метод Cake find('list')
по умолчанию использует списки id => name
, которые можно настроить с помощью параметра fields
(необходимо указать два поля).Я не знаю, сработает ли это, если вы укажете одно и то же поле дважды, возможно, вы захотите попробовать это.бесконечные способы составить список самостоятельно.Проще всего, используйте find('list')
, затем просто скопируйте значения в ключи:
$countries = $this->Country->find('list');
$countries = array_combine($countries, $countries);
Если в вашей таблице country
вообще нет поля id
, просто используйте обычный find('all')
исоздайте свой собственный массив:
$countries = $this->Country->find('all');
$countries = array_map(function ($country) { return $country['Country']['name']; }, $countries);
$countries = array_combine($countries, $countries);
И последнее, но не менее важное: вы можете отказаться от помощника Cake Form, который ожидает массив value => name
для своих параметров, и вывести свой собственный список стран на необработанном PHP.
Соглашения Cake - это безопасное время для типичных моделей.Если ваши шаблоны не типичны, в CakePHP все еще есть PHP.