{"id":181,"date":"2010-03-13T18:39:36","date_gmt":"2010-03-13T17:39:36","guid":{"rendered":"http:\/\/www.webmaid.de\/?p=181"},"modified":"2010-03-13T18:46:54","modified_gmt":"2010-03-13T17:46:54","slug":"select-box-in-cakephp-mit-datenbankwerte-vorbelegen","status":"publish","type":"post","link":"https:\/\/www.webmaid.de\/2010\/03\/select-box-in-cakephp-mit-datenbankwerte-vorbelegen\/","title":{"rendered":"Select-Box in CakePHP mit Datenbankwerte vorbelegen"},"content":{"rendered":"

Man hat z.b. eine Tabelle in der alle g\u00fcltigen L\u00e4nder stehen und will diese in CakePHP auf der Seite nutzen – nur wie? In unserem Beispiel heisst die Tabelle Country und hat genau zwei Felder (wie es auch f\u00fcr die Select-Box \u00fcblich ist mit id und value).
\n<\/p>\n

Tabellenstruktur<\/h2>\n

Die Tabellenstruktur ist eigentlich irrelevant f\u00fcr das Beispiel, wird jedoch der Vollst\u00e4ndigkeithalber hier mit aufgef\u00fchrt.<\/p>\n

CREATE TABLE County (id tinyint unsigned not null auto_increment, langKey varchar(50) not null, PRIMARY KEY(id))<\/code><\/pre>\n

Controller<\/h2>\n

Im Controller sollte man eine Methode bereitstellen, die diese Daten l\u00e4dt und in ein entsprechendes Objekt packt. Auf jeder Seite, wo man nun die Select-Box anzeigt, kann man die Methode entsprechend aufrufen.<\/p>\n

$data = $this->Country->find('all',array('fields' => array('Country.id','Country.langKey')));\r\n$data = Set::combine($data,'{n}.Country.id','{n}.Country.langKey');\r\n$this->set('countryData',$data_combine);<\/pre>\n

<\/combine><\/p>\n

View<\/h2>\n

In der View muss man nun nur noch eine Select-Box mit dem FormHelper anlegen.<\/p>\n

echo $form->input('country', array('options'  => array($countryData)));<\/code><\/pre>\n
\n