Multicheckboxy zamiast multiselectorów w CakePHP 1.2RC2 13-09-2008
Autor: Grzegorz Olejarz. Kategorie: CakePHP , trackbackMając zaprojektowaną bazę danych i zdefiniowaną relację wiele-do-wielu, skrypt „bake” generuje kod strony. Relacja wiele-do-wielu przedstawiona jest jako lista „multiselect” – lista wielokrotnego wyboru. Lista ta jest o tyle niewygodna, że chcąc wybrać kilka opcji, trzeba robić to z wciśniętym przyciskiem ctrl. Jeden nieuważny ruch, przypadkowe kliknięcie i cały proces wyboru trzeba powtarzać od nowa.
Można usunąć tą niedogodność zamieniając listę wielokrotnego wyboru na listę checkboxów:
W widoku dodajemy tablicę atrybutów:
echo $form->input('Post.Tag', array('type'=>'select', 'multiple'=>'checkbox', 'options'=>$tags, 'label'=>'Tagi:' )); |
Można zmienić jeszcze kontroler, aby generował listę tagów, gdzie wartością jest nazwa tagu, kluczem natomiast jest Tag.id – identyfikator w bazie danych. Lista taka służy do tego, aby w widoku były nazwy przy checkboxach, a nie identyfikatory:
$tags = $this->Post->Tag->find('list', array('fields'=>'Tag.name')); $this->set(compact('tags')); |
Komentarze»
Na razie pusto- może chcesz zacząć?