2009-10-09 10 views
12

Sử dụng CakePHP:CakePHP chọn giá trị mặc định trong đầu vào SELECT

Tôi có mối quan hệ nhiều người, giả sử có nhiều Leafs to Trees. Tất nhiên, tôi đã nướng một biểu mẫu để thêm một Leaf vào một Tree, và bạn có thể chỉ định Tree nào là với một hộp thả xuống (tag) được tạo bởi helper biểu mẫu.

Điều duy nhất là, SELECT hộp luôn mặc định là Tree # 1, nhưng tôi muốn nó để mặc định để cây nó được thêm vào:

Ví dụ, gọi example.com/leaf/add/5 sẽ đưa lên giao diện để thêm một lá mới to Tree # 5. Hộp thả xuống cho Leaf.tree_id sẽ mặc định thành "Cây 5", thay vì "Cây 1" mà nó hiện mặc định.

Tôi cần phải đặt gì trong bộ điều khiển Lá và Lá view/add.ctp để thực hiện việc này?

Trả lời

19

Bạn không bao giờ nên sử dụng select() hoặc text() hoặc radio() v.v.; đó là thực tế khủng khiếp. Bạn nên sử dụng input():

$form->input('tree_id', array('options' => $trees)); 

Sau đó, trong bộ điều khiển:

$this->data['Leaf']['tree_id'] = $id; 
+29

Tôi không chắc chắn về "thực hành khủng khiếp" – SeanDowney

+2

Bạn có thể giải thích điều này tốt hơn một chút không? Biến đó '$ tree' được định nghĩa ở đâu? Không phải '$ options' được coi là một mảng có khóa là loại tùy chọn? – mgPePe

+3

Tin những gì ông nói Miles, là một thực hành TERRIBLE, tôi đã dành 2:00 giờ của khay cuộc sống của tôi để thiết lập "sau" thuộc tính của Bánh với $ this-> Form-> Select() và nó không làm việc tốt. Để tiết kiệm thời gian quý báu, hãy sử dụng $ this-> Form-> input như một Select. – BruneX

1

Giả sử bạn đang sử dụng hình thức helper để tạo ra các hình thức:

select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty) 

Đặt tham số thứ ba để thiết lập các tùy chọn được chọn.

+0

Hey, tôi có đoạn mã sau: $ options = array ('1' => 'opt1', '2' => 'opt2', '3' => 'opt3'); echo $ form-> select ('Fieldname', $ options, ???, mảng(), sai); định dạng cho tham số thứ 3 để đặt mục đã chọn là gì? Tôi dường như không thể làm đúng. – cardflopper

+0

nó phải là giá trị của tùy chọn được chọn –

+0

Trong đó phiên bản CakePHP là gì - tôi không thể tìm thấy tài liệu về điều này trong 1.1, 1.2 hoặc 1.3? – icc97

8

tham số thứ ba nên được như array ('chọn' => giá trị)

+0

Chỉ khi nào bạn muốn giá trị đó luôn được chọn – dfmiller

48

Trong CakePHP 1.3, sử dụng 'default'=>value để chọn giá trị mặc định trong đầu vào đã chọn:

$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3')); 
+9

Tại sao điều này không được đánh dấu là câu trả lời? Đây là một trong những chính xác (khác có thể là một gợi ý, nhưng đây là câu trả lời thực sự về câu hỏi!) –

+0

Hãy xem xét thời gian trễ do bộ nhớ cache của cakephp ... –

+3

Điều này là chính xác trong bánh 1,2 là tốt. Để ngăn bản thân không phát điên - không chỉ làm mới trang để xem các tác phẩm mặc định (nó sẽ ở lại với giá trị nào được chọn), bạn cần phải quay lại trang và nhấp lại vào trang (hoặc truy cập nhấp vào thanh địa chỉ và nhấn enter) – icc97

0

Để đặt văn bản mặc định trong hộp chọn, hãy sử dụng phương thức $form->select(). Đây là cách bạn làm điều đó.

$options = array('m'=>'Male','f'=>'Female','n'=>'neutral'); 

$form->select('Model.name',$options,'f'); 

Mã trên sẽ chọn Female trong hộp danh sách theo mặc định.

Giữ nướng ...

0
FormHelper::select(string $fieldName, array $options, 
array $attributes) 

$attributes['value'] để thiết lập giá trị đó sẽ được chọn mặc định

<?php echo $this->Form->select('status', $list, array(
    'empty' => false, 
    'value' => 1) 
); ?> 
7
$this->Form->input('Leaf.id', array(
'type'=>'select', 
'label'=>'Leaf', 
'options'=>$leafs, 
'value'=>2 
)); 

này sẽ chọn giá trị vị trí chỉ số thứ hai mặc định từ danh sách các tùy chọn trong $ lá .

0

Nếu bạn đang sử dụng phiên bản CakePHP 3.0 trở lên, thì bạn có thể thêm giá trị mặc định vào đầu vào được chọn bằng cách sử dụng thuộc tính trống như được đưa ra trong ví dụ bên dưới.

echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);