2011-07-23 40 views
9

Tôi đang cố gắng tìm hiểu cách thêm tùy chọn đã tắt trong trình đơn thả xuống của tôi, sử dụng CodeIgniter. Mới với CI, và tôi đã thử googling nó một chút, nhưng không thể tìm thấy một câu trả lời.Thêm tùy chọn bị vô hiệu hóa trong codeigniter form_dropdown

Mã của tôi cho một thả xuống trông như thế này:

echo form_dropdown('category', array('0' => 'Choose a category...') + $categories, '0'); 

này mang lại cho tôi một danh sách thả xuống với tất cả các tùy chọn của tôi từ $ loại biến, với "Chọn một loại ..." (giá trị 0) ở phía trên . Bây giờ làm thế nào để tôi làm cho người đầu tiên bị vô hiệu hóa? Tôi biết làm thế nào để làm cho nó chọn một cụ thể, mà tôi đã đặt nó để làm ở đây.

Có ai có thể giúp tôi không? Cảm ơn

Trả lời

-1

Từ hướng dẫn sử dụng CI tại http://codeigniter.com/user_guide/helpers/form_helper.html:

Nếu bạn muốn mở để chứa dữ liệu bổ sung, như một thuộc tính id hoặc JavaScript, bạn có thể vượt qua nó như là một chuỗi trong tham số thứ tư:

Vì vậy, bạn đang trở thành:

echo form_dropdown('category', array('0' => 'Choose a category...') + $categories, '0', 'disabled="disabled"'); 

Tuy nhiên, trừ khi bạn là một người cuồng tín PHP hoặc đang sử dụng bảo vệ CSRF qua helper biểu mẫu Tôi chỉ cần gõ html mẫu của bạn mình. Đó là cùng một lượng văn bản và bạn đang sử dụng ít chức năng hơn.

+2

Cảm ơn bạn đã trả lời. Bằng cách thêm 'disabled =' disabled '' vào cuối, toàn bộ danh sách chọn sẽ bị tắt. Tôi chỉ muốn tùy chọn đầu tiên (giá trị 0) bị vô hiệu hóa, do đó bạn không thể chọn tùy chọn "Chọn danh mục ...". Vâng, có lẽ tôi nên tự mình loại ra mẫu đơn, trừ khi có một giải pháp cho điều này. – beholder

+0

Hãy thử nhóm tùy chọn, tuy nhiên, chúng không hiển thị khi lựa chọn không mở: http://www.w3schools.com/tags/tag_optgroup.asp – sqwk

+0

Tôi làm như sau: Tôi không cung cấp tùy chọn đầu tiên giá trị ' 'và sử dụng thư viện xác nhận biểu mẫu để chọn trường bắt buộc. – sqwk

0

Nếu bạn vẫn muốn sử dụng form_helper, bạn luôn có thể mở rộng tệp trợ giúp và làm cho thẻ 'vô hiệu hóa' khả dụng. Tạo MY_Form_helper.php và đặt nó dưới thư mục helper, sau đó định nghĩa hàm form_dropdown trong trình trợ giúp tùy chỉnh đó, sau đó nó sẽ vượt qua hành vi trợ giúp biểu mẫu.

1

Tôi biết đây là một bài cũ, nhưng trong phiên bản hiện tại của CI, tôi có thể làm một mẹo nhỏ (sql-injection-like) bằng cách thêm " disabled="disabled vào các phím của tùy chọn mà tôi muốn vô hiệu hóa.

$categories['0'] = '(Select Category)'; 
$categories['1'] = 'Category 1'; 
$categories['2" disabled="disabled'] = 'Restricted Category'; 
$categories['3'] = 'Category 3'; 

echo form_dropdown('category', $categories, '0'); 

Tôi không chắc chắn đây có phải là lỗi của form_helper của CI hay không, vì nó không thực hiện bất kỳ chức năng thoát hoặc khử trùng nào cho khóa/giá trị thả xuống. Đối với thời gian trung bình, để được an toàn, chỉ cần đảm bảo rằng các khóa và giá trị của bạn sẽ không đến từ bất kỳ đầu vào dựa trên người dùng nào.

0

Nếu bạn có một vài lựa chọn tĩnh chỉ biến $ tùy chọn có thể là một chuỗi đơn giản quá, có chứa các tùy chọn định dạng html, như thế này:

$options = " 
<option value=0 disabled>Select Category</option> 
<option value=1>Category 1</option> 
<option value=2>Category 2</option>"; 

echo form_dropdown('category', $options, '0'); 
1

Chỉ cần thêm thứ tư param $ thêm để thả xuống của bạn như là một chuỗi như thế này 'disabled = disabled' như được giải thích trong CI Documents tại https://codeigniter.com/user_guide/helpers/form_helper.html#available-functions

echo form_dropdown('category', array('0' => 'Choose a category...') + $categories, '0', 'disabled=disabled'); 
+1

Điều này làm cho '