ฉันมีรายการที่เลือกพร้อมตัวเลือก:
$options = array(0 => '0', 500 => '500', 1000 => '1000');
ฉันกำลังพยายามตั้งเป็นค่าเริ่มต้นที่ 500:
$form['price']['min']['#options'] = $options;
$form['price']['min']['#default_value'] = 500;
แต่มันไม่ทำงาน
ฉันมีรายการที่เลือกพร้อมตัวเลือก:
$options = array(0 => '0', 500 => '500', 1000 => '1000');
ฉันกำลังพยายามตั้งเป็นค่าเริ่มต้นที่ 500:
$form['price']['min']['#options'] = $options;
$form['price']['min']['#default_value'] = 500;
แต่มันไม่ทำงาน
คำตอบ:
ฉันไม่เคยเห็นปัญหานี้เลย ค่าเริ่มต้นนั้นควรใช้งานได้ ฉันจะบอกว่าลองทำกุญแจสตริงและตั้ง#default_valueเป็นสตริง #optionsอาร์เรย์อาจจะถูกส่งผ่านarray_merge ที่ไหนสักแห่งจึง rekeying จำนวนเต็มคีย์ หากคีย์เป็นสตริงดังนั้นจึงไม่ควรเกิดขึ้น ขณะนี้อาร์เรย์ของคุณมีลักษณะดังนี้:
$options = array(
0 => '0',
500 => '500',
1000 => '1000',
);
แต่การส่งผ่านอาร์เรย์array_mergeนั้นสามารถจัดระเบียบคีย์จำนวนเต็มเหล่านั้นใหม่เพื่อให้เรียงตามลำดับ:
$options = array(
0 => '0',
1 => '500',
2 => '1000',
);
หากสิ่งนั้นเกิดขึ้น500กุญแจก็จะไม่มีอยู่จริง นี่เป็นเพราะarray_mergeไม่ต้องการเก็บรักษาคีย์จำนวนเต็ม แต่คุณสามารถใช้สตริงเพื่อป้องกันได้ ดังนั้นฉันคิดว่าอาร์เรย์ของคุณควรมีลักษณะเช่นนี้:
$options = array(
'0' => '0',
'500' => '500',
'1000' => '1000',
);
จากนั้นคุณสามารถตั้งค่าของคุณ#default_value:
$form['price']['min']['#default_value'] = '500';
มิฉะนั้นจะมีที่ไหนอีกบ้างที่default_valueอาจถูกแทนที่?
รหัสของคุณควรใช้งานได้โดยทั่วไปใช้ค่าคีย์เป็นค่าเริ่มต้นหากไม่สามารถใช้งานได้ให้สร้างสตริงเป็นคีย์และใช้เป็นค่าเริ่มต้น
คุณลองใช้สตริงแทนจำนวนเต็มหรือไม่?
$form['price']['min']['#default_value'] = "500"
อาจลองเพิ่ม'und'คีย์ด้วย
คุณลองใช้คีย์จากตัวเลือก $ array เพื่อกำหนดค่าเริ่มต้นหรือไม่
$form['price']['min']['#default_value'] = $options[500];
$options = array(0 => '0', 500 => '500', 1000 => '1000');
$form['price'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => 500,
);
ในการตั้งค่าเริ่มต้นในรายการที่เลือกเราใช้พารามิเตอร์ #default_value ค่าของแอตทริบิวต์ default_value ของรายการที่เลือกจะเป็นกุญแจสำคัญของอาร์เรย์รายการที่เลือก
รหัสต่อไปนี้จะแสดงฟิลด์ที่มีค่าเริ่มต้นเป็น 500
$options = array(0 => '0', 500 => '500', 1000 => '1000');
$form['price'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => 500,
'#title' => 'Price',
);
ฉันประสบปัญหาเดียวกันและฉันพยายามให้ดัชนีของอาร์เรย์ซึ่งฉันต้องการให้เป็นค่าเริ่มต้นและใช้งานได้ คำตอบของฉันคล้ายกับ Ashok KS แต่บรรทัดที่สองของเขาฉันไม่เข้าใจ
คงที่เราควรกำหนดค่าเริ่มต้นเป็นอันดับแรกของอาร์เรย์ตัวเลือก $ ถ้าเราเพิ่มสุดท้ายรหัสคีย์เปลี่ยน [1] => วิทยาศาสตร์, [2] => ละครละครขวาควรเป็น [192] => วิทยาศาสตร์, [231 ] => ละคร :-)
ลอง:
$ form ['price'] ['# default_value'] = 500;
มันใช้งานได้ดีสำหรับฉัน
ควรจะมีก็มีปากเสียงในรูปแบบเป็น#default_value#value
$form['price']['min']['#default_value'] = $options['500'];
เพียงแค่ใช้
$form['price']['min']['#default_value'] = 2
ซึ่งหมายความว่าค่าเริ่มต้นจะใช้ตัวเลือก 2eme
การแก้ไข: คิดว่าform_select_optionsไม่ได้จัดการ#default_valueเลย ดังนั้นฉันจึงใช้#value property:
$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
#valueพารามิเตอร์จะทำให้ผู้ใช้ไม่สามารถเปลี่ยนค่าได้
$_REQUEST['price']['min'] $my_default_valueสิ่งที่คุณใส่ใน #value จะเป็นค่าของฟิลด์โดยไม่คำนึงถึงสิ่งที่ผู้ใช้ป้อน