Использование числовых ключей с CakePhp FormHelper Select - PullRequest
0 голосов
/ 30 января 2011

Я использую FormHelper (торт 1.3), чтобы создать поле выбора из массива. Массив использует числа в качестве ключей, но поле выбора игнорирует эти числа и использует нулевой индекс для значений параметра поля выбора. Я попытался напечатать ключ массива в строку, используя (string) $ key и strval ($ key), но безуспешно. Опции выбора работают, когда я добавляю букву перед цифровой клавишей (то есть клавиша 'c'. $), Но я бы хотел избежать этого хака.

Есть ли способ заставить FormHelper использовать настоящие цифровые клавиши без добавления буквы? Любая помощь будет оценена.

См. Следующий код для иллюстрации:

// $category_list looks like this
Array
(
    [164] => Antiques & Art
    [83] => Baby/Children Needs
    [176] => Boats/Marine/Fishing
    [222] => Books & Magazines
    [287] => Building Materials
    [215] => Business
    [175] => Caravans & Motor Homes
    [169] => Cars & Other Vehicles
    [127] => Clothing & Accessories
    [92] => Computers & Electronics
    [358] => Farm & Agriculture
    [235] => Garage Sales/Yard Sales
    [309] => Garden & Yard
    [178] => General Merchandise
    [138] => Health & Beauty
    [186] => Hobbies & Collectables
    [63] => Household
    [234] => Information
    [388] => Motorbikes & Scooters
    [206] => Musical Instruments
    [449] => Notices
    [305] => Pets and Accessories
    [242] => Positions Vacant
    [236] => Real Estate & Rentals
    [243] => Services
    [143] => Sports Equipment
    [308] => Tools & Equipment
    [300] => Travel & Holiday
)

// Output category select box
echo $form->select(
 'category',
 $category_list,
 $category,
 array('id'=>'SearchCategories')
);

// Outputs like this
<option value="1">Antiques &amp; Art</option>
<option value="2">Baby/Children Needs</option>
<option value="3">Boats/Marine/Fishing</option>
<option value="4">Books &amp; Magazines</option> 
...

// I'd like it to output like this
<option value="164">Antiques &amp; Art</option>
<option value="83">Baby/Children Needs</option>
<option value="176">Boats/Marine/Fishing</option> 
<option value="222">Books &amp; Magazines</option> 
...

1 Ответ

0 голосов
/ 30 января 2011

Если вы придерживаетесь соглашений, вы должны иметь возможность делать $ this-> Form-> input ('category_id'), и это будет просто работать (с передачей $ category в представление). Cake использует ключ массива для значения в select, поэтому вы должны передавать неверные данные.

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

...