ตั้งค่าเริ่มต้นรายการที่เลือกเลือก [ปิด]


16

ฉันมีรายการที่เลือกพร้อมตัวเลือก:

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 

ฉันกำลังพยายามตั้งเป็นค่าเริ่มต้นที่ 500:

$form['price']['min']['#options'] = $options; 
$form['price']['min']['#default_value'] = 500;

แต่มันไม่ทำงาน


1
ฉันพบปัญหาเดียวกัน ปัญหาคือฉันไม่ได้เรนเดอร์แบบฟอร์มโดยใช้ drupal_get_form () แต่มีวิธีอื่นเนื่องจากกรณีการใช้งาน
user1750

ฉันพบคำถามเดียวกัน !!!! ใครสามารถช่วยฉันได้บ้าง
bluesky_still

1
500 ควรเป็น '500' สตริงไม่ใช่จำนวนเต็ม
saadlulu

คำตอบ:


3

ฉันไม่เคยเห็นปัญหานี้เลย ค่าเริ่มต้นนั้นควรใช้งานได้ ฉันจะบอกว่าลองทำกุญแจสตริงและตั้ง#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อาจถูกแทนที่?


3

รหัสของคุณควรใช้งานได้โดยทั่วไปใช้ค่าคีย์เป็นค่าเริ่มต้นหากไม่สามารถใช้งานได้ให้สร้างสตริงเป็นคีย์และใช้เป็นค่าเริ่มต้น


2

คุณลองใช้สตริงแทนจำนวนเต็มหรือไม่?

$form['price']['min']['#default_value'] = "500"

อาจลองเพิ่ม'und'คีย์ด้วย


1

คุณลองใช้คีย์จากตัวเลือก $ array เพื่อกำหนดค่าเริ่มต้นหรือไม่
$form['price']['min']['#default_value'] = $options[500];


หากทำเสร็จแล้วมันจะส่งค่า $ options [500] ซึ่งก็คือ (สตริง) '500'
jordojuice

1
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

ในการตั้งค่าเริ่มต้นในรายการที่เลือกเราใช้พารามิเตอร์ #default_value ค่าของแอตทริบิวต์ default_value ของรายการที่เลือกจะเป็นกุญแจสำคัญของอาร์เรย์รายการที่เลือก


0

รหัสต่อไปนี้จะแสดงฟิลด์ที่มีค่าเริ่มต้นเป็น 500

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  

-1

ฉันประสบปัญหาเดียวกันและฉันพยายามให้ดัชนีของอาร์เรย์ซึ่งฉันต้องการให้เป็นค่าเริ่มต้นและใช้งานได้ คำตอบของฉันคล้ายกับ Ashok KS แต่บรรทัดที่สองของเขาฉันไม่เข้าใจ


-1

คงที่เราควรกำหนดค่าเริ่มต้นเป็นอันดับแรกของอาร์เรย์ตัวเลือก $ ถ้าเราเพิ่มสุดท้ายรหัสคีย์เปลี่ยน [1] => วิทยาศาสตร์, [2] => ละครละครขวาควรเป็น [192] => วิทยาศาสตร์, [231 ] => ละคร :-)



-2

ควรจะมีก็มีปากเสียงในรูปแบบเป็น#default_value#value

$form['price']['min']['#default_value'] = $options['500'];

-4

เพียงแค่ใช้

$form['price']['min']['#default_value'] = 2 

ซึ่งหมายความว่าค่าเริ่มต้นจะใช้ตัวเลือก 2eme


-5

การแก้ไข: คิดว่าform_select_optionsไม่ได้จัดการ#default_valueเลย ดังนั้นฉันจึงใช้#value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;

2
ตัวเลือกการเลือกมีค่าเริ่มต้น การตั้งค่า#valueพารามิเตอร์จะทำให้ผู้ใช้ไม่สามารถเปลี่ยนค่าได้
googletorp

1
ดูรหัสฉันตั้ง #value เป็น default_value เฉพาะเมื่อไม่มีค่าใด ๆ ใน #value
breesee

คุณมักจะตั้งค่าให้ #VALUE อย่างใดอย่างหนึ่งหรือ$_REQUEST['price']['min'] $my_default_valueสิ่งที่คุณใส่ใน #value จะเป็นค่าของฟิลด์โดยไม่คำนึงถึงสิ่งที่ผู้ใช้ป้อน
googletorp

หากผู้ใช้ป้อนค่าบางค่าค่านี้จะส่งผ่าน GET ($ _REQUEST ['price'] ['min']) ดังนั้นหากผู้ใช้ป้อนค่าฉันตั้งค่า #value ให้กับการป้อนข้อมูลของผู้ใช้มิฉะนั้น #value = $ my_default_value
breethe

นั่นคือปัญหา ผู้ใช้สามารถใช้ตัวเลือก แต่ไม่สำคัญว่าจะเลือกอะไรผลลัพธ์จะเหมือนกัน
googletorp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.