Манипулирование массивом для создания выпадающего списка cakephp - PullRequest
3 голосов
/ 25 июня 2010

это моя проблема я хочу создать выпадающий список из состояний таблицы («id», «имя_состояния»), которая не является моей моделью по умолчанию (в которой много полей, одно из полей - «состояние», в котором я храню состояния («id») ) поэтому я использовал loadModel, чтобы заполнить выпадающий список. в моем контроллере я использовал

$this->loadModel('State');
$this->set('states',$this->State->find('all'));

со стороны вида

$form->select('State_id',$states);

в выходных данных отображаются имя таблицы, идентификатор и имя.

когда я печатал $ states с помощью pr (); то, что я получил, было

Array
(
    [0] => Array
        (
            [State] => Array
                (
                    [id] => 1
                    [state_name] => state1
               )

        )

    [1] => Array
        (
            [State] => Array
                (
                    [id] => 2
                    [state_name] => state2
                )

        )

и т. Д.

как создать массив, подобный массиву (1 => state1, 2 => state2) из ​​вышеуказанного массива или есть другой способ создать выпадающий список

любезно помогите

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Это путь:

$fields = array('id','state_name');
$states = $this->State->find('list',array('fields'=>$fields));
$this->set(compact('states'));

или в одну строку:

$this->set('states',$this->State->find('list',array('fields'=>array('id','state_name'))));
1 голос
/ 25 июня 2010

Приведенный ниже код создаст нужный массив из исходного массива

$newstates = array();

foreach($states as $state) {
    $state = $state['State']
    $newstates[$state['id']] = $state['state_name'];
}

print_r($newstates);

Результат:

Array
(
    [1] => state1
    [2] => state2
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...