0

我正在使用 FormHelper (cake 1.3) 从数组中创建一个选择框。该数组使用数字作为键,但选择框会忽略这些数字,并为选择框选项值使用从零开始的索引。我尝试使用 (string)$key 和 strval($key) 将数组键键入字符串,但没有成功。当我在数字键(即 'c'.$key )之前添加一个字母时,选择选项起作用,但我想避免这种黑客攻击。

有没有办法强制 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> 
...
4

1 回答 1

0

如果您遵守约定,您应该能够执行 $this->Form->input('category_id') 并且它会正常工作(将 $categories 传递给视图)。Cake 确实使用数组的键作为选择中的值,因此您必须传递错误的数据。

我猜你已经在数组上完成了 sort() ,这将重置所有的键。查看 php 手册,了解按值排序的方法,保持键不变,asort() iirc

于 2011-01-30T16:20:43.217 回答