2012-04-20 36 views
12

Tôi có một nhiều chọn đầu vào ở dạng chỉnh sửa của tôi: -CakePHP nhiều chọn "chọn" không hoạt động

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array($selected))); ?> 

Khi echo-ed, biến $selected sẽ trông như thế này: -

"MySQL", "PHP" 

Tuy nhiên, đầu vào không tự động chọn tùy chọn khớp với thẻ.

Tuy nhiên, khi tôi đặt thủ công vào tùy chọn đã chọn, nó sẽ tự động chọn hai tùy chọn đó; ví dụ.

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array("MySQL", "PHP"))); ?> 

Có cách nào để sửa lỗi này không? Cảm ơn.

Trả lời

16

Ahh, tôi đã cố định này.

Tôi đang nhìn sai hướng. Tôi giả định rằng các giá trị được chọn phải ở dạng chuỗi có dấu ngoặc kép và dấu phẩy được phân cách. (ví dụ: "MySQL", "PHP", "jQuery").

Thay vào đó, nó phải ở định dạng mảng mà không có bất kỳ dấu ngoặc kép và dấu phẩy nào. ví dụ.

Array 
(
    [0] => MySQL 
    [1] => PHP 
    [2] => jQuery 
) 

Khi tôi đã sắp xếp mảng, tôi chuyển nó vào chế độ xem; ví dụ. $ this-> set ('selected', $ myArray);

Sau đó, về hình thức, tôi sẽ chỉ phải echo nó ra như thế này: -

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => $selected)); ?> 
0

bánh php được totaly dựa trên quy ước đặt tên và mảng Formating ..

cố gắng để làm như thế này: -

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','selected' => $selected));?> 
+0

Hi, Tôi đã thử điều này và nó dường như không hoạt động. –

1

Sử dụng từ khóa mặc định:

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','default' => $selected));?> 
1

Không cần phải làm chọn thuộc tính

Đối ví dụ:

trong bộ điều khiển:

$this->request->data = $this->Article->read(null, $id); 

$this->set(array(
     'centers' => $this->Center->find('list'), 
     'shopCategories' => $this->ShopCategory->find('list'), 
     'brands' => $this->Brand->find('list') 
    )); 

theo quan điểm:

echo $this->Form->input('Center', array('multiple' => 'multiple')); 

đó là tất cả!

0

Trong CakePHP 3.x phiên bản, Bạn có thể đặt value để chọn trước từ danh sách

echo $this->Form->select(
    'Article.tags', 
    ['PHP','MySQL','jQuery','AJAX'], 
    [ 
     'multiple' => true, 
     'value' => ['MySQL','AJAX'] 
    ] 
); 

phần tử HTML với các giá trị MySQLAJAX sẽ được trả lại như chọn trước

Các vấn đề liên quan