Generierte Selectbox einem Datenbankfeld zuordnen

Daten auslesen, verarbeiten und den Views übergeben

Generierte Selectbox einem Datenbankfeld zuordnen

Beitragvon Sebi am So 4. Okt 2009, 14:17

Hallo,

ich habe mir eine Cake Treeliste erstellt, welche so auch funktioniert.
Nun möchte ich in einer Add und Edit View nicht die parent_id einer Kategorie eingeben lassen, sondern die Kategorien sollen als Auswahl mit Namen erscheinen.

Im Controller habe ich folgenden Code:
Code: Alles auswählen
       
$categories =  $this->Category->find('list');
$this->set(compact('categories'));
 


In der View
Code: Alles auswählen

echo $form->input('categories');
 


Somit wird eine Selectbox mit den Kategorienamen angezeigt, mit der ich die Elternkategorie auswählen lassen will (anstatt das parent_id Feld, welches per cake bake standardisiert erzeugt wird)

Meine Frage ist nun, wie mache ich dem Controller klar, dass die Selectbox input('categories') das parent_id Feld ist und auch als solches gespeichert werden soll? Sende ich das Formular so ab, so wird das parent_id Feld ja nicht gespeichert bzw. geändert.

Vielen Dank
Sebi
 
Beiträge: 6
Registriert: So 4. Okt 2009, 14:05

Re: Generierte Selectbox einem Datenbankfeld zuordnen

Beitragvon Dogo am Mo 5. Okt 2009, 12:05

Mein Code dazu:

Code: Alles auswählen
    function add() {
    if (!empty($this->data)) {
        $this->Category->save($this->data);
        $this->redirect(array('action' => 'index'));
        }
    else    {
        $liste[0] = 'Ganz oben';
        $listeneu = array_merge($liste, $this->Category->generatetreelist(null, null, null, '->'));
       
        $this->set('categories', $listeneu);
        }
    }


Code: Alles auswählen
<!-- File: /app/views/categories/add.ctp -->

<h1>Kategorie anlegen</h1>
<?php
echo $form->create('Category');
echo $form->input('name', array('rows' => '1'));
echo $form->input('description', array('rows' => '3'));
echo $form->input('parent_id', array('options' => $categories, 'label' => 'Wo soll die Kategorie eingehängt werden?'));
echo $form->end('Kategorie Anlegen');
?>


Gruß,

Dogo
Benutzeravatar
Dogo
 
Beiträge: 54
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal

Re: Generierte Selectbox einem Datenbankfeld zuordnen

Beitragvon Sebi am Mo 5. Okt 2009, 16:29

Funktioniert super vielen Dank!

Eine Frage noch dazu, wie bekomme ich die index-Tabelle dazu, statt der parent_id den parent_namen darzustellen?

Derzeit habe ich folgenden Controller-Code für die index-View:
Code: Alles auswählen

    function index() {
        $this->Category->recursive = 0;
        $this->set('categories', $this->paginate());
    }
 


Ich stehe etwas auf dem Schlauch, ich bräuchte also quasi eine Art Funktion in der Art
Code: Alles auswählen
echo $this->Category->find('first', array('conditions' => array('Category.id' => $category['Category']['parent_id'])));

Aber wie einbauen damit es in der View in der passenden Zeile auch angezeigt wird?
Sebi
 
Beiträge: 6
Registriert: So 4. Okt 2009, 14:05

Re: Generierte Selectbox einem Datenbankfeld zuordnen

Beitragvon Sebi am Di 6. Okt 2009, 19:31

Keiner eine Idee? :)
Sebi
 
Beiträge: 6
Registriert: So 4. Okt 2009, 14:05

Re: Generierte Selectbox einem Datenbankfeld zuordnen

Beitragvon Dogo am Do 8. Okt 2009, 02:15

Hm... Index heißt also "alle anzeigen", ja?

Entweder, Du fragst immer nochmal die Datenbank, aber das wäre Verschwendung.
Es gibt da doch so eine Funktion von Cake, die ein Array durchsucht. Ich schau mal danach, ich brauche die nämlich auch...

Gruß,

Dogo

Edit: Probiers mal hier mit:
http://www.selfphp.de/funktionsreferenz ... search.php
Benutzeravatar
Dogo
 
Beiträge: 54
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal

Re: Generierte Selectbox einem Datenbankfeld zuordnen

Beitragvon Sebi am Fr 16. Okt 2009, 08:50

Das mit der Selectbox zuordnen funktioniert jetzt vielen Dank.
Für die Sache mit dem Namen statt parent_id anzeigen mache ich ein neues Thema auf.
Sebi
 
Beiträge: 6
Registriert: So 4. Okt 2009, 14:05


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron