Đặt giá trị mặc định của danh sách chọn [đã đóng]


16

Tôi có danh sách chọn với các tùy chọn:

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

Tôi đang cố gắng đặt giá trị mặc định của nó thành 500:

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

Nhưng điều này không làm việc.


1
Tôi gặp vấn đề tương tự. Vấn đề là tôi đã không hiển thị biểu mẫu bằng drupal_get_form (), nhưng một số cách khác vì trường hợp sử dụng.
dùng1750

Tôi đã gặp câu hỏi tương tự !!!! ai có thể giúp tôi?
bluesky_still

1
500 phải là '500', chuỗi không phải là số nguyên.
saadlulu

Câu trả lời:


3

Mã của bạn phải hoạt động, thường sử dụng giá trị khóa làm giá trị mặc định, nếu nó không hoạt động, hãy tạo chuỗi làm khóa và sử dụng nó làm giá trị mặc định.


2

Tôi chưa bao giờ thấy vấn đề này. Giá trị mặc định đó sẽ hoạt động. Tôi muốn nói hãy thử làm cho khóa thành một chuỗi và đặt #default_valuethành một chuỗi. Các #optionsmảng chưa được đi qua array_merge nơi nào đó, do đó rekeying nguyên phím. Nếu khóa là chuỗi thì điều đó không nên xảy ra. Hiện tại, mảng của bạn trông như thế này:

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

Nhưng việc truyền mảng đó qua array_mergecó thể sắp xếp lại các khóa nguyên đó theo thứ tự tuần tự:

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

Nếu điều đó xảy ra thì 500chìa khóa đơn giản là không tồn tại. Điều này là do array_mergekhông thích bảo tồn các khóa nguyên, nhưng bạn có thể sử dụng các chuỗi để ngăn chặn nó. Vì vậy, tôi nghĩ rằng mảng của bạn sẽ trông giống như thế này:

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

Sau đó, bạn có thể thiết lập #default_value:

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

Nếu không, có nơi nào khác default_valuecó thể bị ghi đè không?


2

Bạn đã thử sử dụng một chuỗi thay vì một số nguyên?

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

Có lẽ cũng đáng để thử thêm 'und'chìa khóa.


1

Bạn đã thử sử dụng khóa ngoài mảng $ tùy chọn để xác định giá trị mặc định chưa?
$form['price']['min']['#default_value'] = $options[500];


Nếu điều đó được thực hiện, về mặt kỹ thuật sẽ chỉ vượt qua giá trị của các tùy chọn $ [500], đó là (chuỗi) '500'.
jordojuice

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

Để đặt giá trị mặc định trong danh sách chọn, chúng tôi sử dụng tham số #default_value. Giá trị của thuộc tính default_value của danh sách chọn sẽ là khóa của mảng danh sách chọn.


0

Mã sau sẽ hiển thị trường có giá trị mặc định là 500.

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

-1

Tôi đã đối mặt với cùng một vấn đề và tôi đã thử đưa ra chỉ số của mảng mà tôi muốn là giá trị mặc định và nó đã hoạt động. Câu trả lời của tôi tương tự như Ashok KS nhưng dòng thứ hai của anh ấy tôi không thể hiểu được.


-1

Đã sửa lỗi, chúng ta nên đặt giá trị mặc định trước cho mảng tùy chọn $ đó, nếu chúng ta thêm lần cuối, khóa mảng đã thay đổi [1] => khoa học, [2] => drama, bên phải là [192] => khoa học, [231 ] => kịch :-)


-1

thử:

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

Nó làm việc tốt cho tôi.


-2

Các #default_valuenên có lý lẽ của nó trong các hình thức như #value.

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

-4

Chỉ dùng

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

có nghĩa là giá trị mặc định sẽ có tùy chọn 2eme


-5

GIẢI PHÁP: Chỉ ra rằng form_select_options hoàn toàn không xử lý #default_value. Vì vậy, tôi đã sử dụng #value property:

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

2
Chọn tùy chọn có giá trị mặc định. Ngoài ra, việc đặt #valuetham số sẽ khiến người dùng không thể thay đổi giá trị.
googletorp

1
Nhìn vào mã, tôi đặt #value thành default_value chỉ khi không có bất kỳ giá trị nào trong #value.
chào

Bạn luôn đặt giá trị thành #value, $_REQUEST['price']['min']hoặc $my_default_value. Bất cứ thứ gì bạn đặt vào #value sẽ là giá trị của trường bất kể người dùng nhập gì.
googletorp

Nếu người dùng nhập một số giá trị, giá trị này được gửi qua GET ($ _REQUEST ['price'] ['min']). Vì vậy, nếu giá trị đầu vào của người dùng, tôi đặt #value thành đầu vào của người dùng, nếu không thì #value = $ my_default_value
breethe

Đó là vấn đề. Người dùng có thể sử dụng lựa chọn, nhưng không quan trọng họ chọn gì, kết quả sẽ giống nhau.
googletorp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.