By default, the helper will use the id and name (or title) fields from your 
related lookup table, and you populate the options by:

$categories = $this->[Model]->Category->find('list'); ([Model] is the model 
associated with the current controller)

You then pass that variable (using set) into the view from your controller. The 
input:

echo $this->Form->input('category_id');

...will then automatically look for a variable called $categories. If it is 
present, it will use those values, or the variable you have specified 
('category_list', in your case).

If you are deviating away from this standard you can expect the unexpected and 
the need to do some hacking. Looks like the problem is the way you are building 
your options array, or possibly the data type of the underlying field, 
'category'; is that a varchar/char? It really ought to be called category_id to 
meet with conventions, and I would use Form->input, not Form->select.


Jeremy Burns
Class Outfit

jeremybu...@classoutfit.com
http://www.classoutfit.com

On 29 Jan 2011, at 21:05, richfarr wrote:

> I'm using the FormHelper (cake 1.3) to create a select box from an
> array. The array uses numbers as keys but the select box ignores those
> numbers and uses a zero-based index for the select box option values.
> I've tried typing the array key to a string using both (string)$key
> and strval($key) with no luck. The select options work when I prepend
> a letter before the numeric key (i.e. 'c'.$key ) but I'd like to avoid
> this hack.
> 
> Is there a way to force FormHelper to use the actual numeric keys
> without prepending a letter? Any help would be appreciated.
> 
> See the following code for illustration:
> 
> // $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>
> ...
> 
> -- 
> Our newest site for the community: CakePHP Video Tutorials 
> http://tv.cakephp.org 
> Check out the new CakePHP Questions site http://ask.cakephp.org and help 
> others with their CakePHP related questions.
> 
> 
> To unsubscribe from this group, send email to
> cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
> http://groups.google.com/group/cake-php

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to