Empfehlungen: Erweiterte Suche

ID per URL in einen Add-View übergeben

Daten auslesen, verarbeiten und den Views übergeben

ID per URL in einen Add-View übergeben

Beitragvon Kekskruemel » Fr 19. Nov 2010, 16:50

Ich habe ein Problem mit meinem Controller. Ich bin noch Anfänger mit CakePHP.

Ich habe drei Tabellen in meiner Datenbank:

Stations(id, name, adresse, tel, fax, modified, ...)
Prices(id, station_id, petrol_id, value, created)
Petrols(id, name)

Ich gebe nun mit prices/add/2 z.B. die PReise der tankstelle mit der ID 2 ein - so ist das Ziel.
Code: Alles auswählen
        function add($id = null) {
                if (!empty($this->data)) {
                        $this->Price->create();
                        if ($this->Price->save($this->data)) {
                                $this->Session->setFlash(__('The price has been saved', true));
                                $this->redirect(array('action' => 'index'));
                        } else {
                                $this->Session->setFlash(__('The price could not be saved. Please, try again.', true));
                        }
                }
                $stations = $this->Price->Station->find('list');
                $petrols = $this->Price->Petrol->find('list');
                $this->data['Price']['active'] = 1;
                $station_id = $this->params['id'];
                $this->data['Price']['station_id'] = $station_id;
                $this->set(compact('stations', 'petrols'));
        }


Das Feld für die "station_id" habe ich dabei nicht mehr im View enthalten.
Diese soll ja über die URL mit übergeben werden.

Nun habe ich gedacht, dass dies mit dem obigen Code funktioniert. Leider überträgt er weder die active=1 in die DB, noch die station_id als 2 (in dem Bsp.)
Kekskruemel
 
Beiträge: 15
Registriert: Di 16. Nov 2010, 10:45

Re: ID per URL in einen Add-View übergeben

Beitragvon euromark » Fr 19. Nov 2010, 17:17

wenn du für die default values keine hidden inputs im view hast kann es logischerweise auch gar nicht funktionieren.

mein tipp:
nie über hidden inputs machen (diese könnten manipuliert werden).
einfach direkt vor dem SAVE die felder dazutun.

wichtig dabei:
die url beim post muss erhalten bleiben:
array(url=>'/'.$this->params['url']['url']) im form create!
euromark
 
Beiträge: 642
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: ID per URL in einen Add-View übergeben

Beitragvon Kekskruemel » Sa 20. Nov 2010, 16:00

OK; also im View

Code: Alles auswählen
<? php
echo $form->hidden(‘station_id’);

echo $form->hidden(‘active’);
 ?>


Belegen dann erst im Controller.

Wofür dann im View die hiddens? Benötige ich die, damit ich die entsprechende Variable im Array für die SQL Anweisung erzeuge?

Und bei meiner Form im View sehe das dann so aus mit dem Create:
Code: Alles auswählen


$form->create(Price, array('url' => $this->params['url']['url']));


?
Kekskruemel
 
Beiträge: 15
Registriert: Di 16. Nov 2010, 10:45

Re: ID per URL in einen Add-View übergeben

Beitragvon euromark » Sa 20. Nov 2010, 16:35

wie gesagt:
Code: Alles auswählen
$form->create(Price, array('url' => '/'.$this->params['url']['url']));


'/' is wichtig, damit es überall funzt!
euromark
 
Beiträge: 642
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: ID per URL in einen Add-View übergeben

Beitragvon Kekskruemel » Sa 20. Nov 2010, 16:46

Super. Vielen Dank. So funktioniert es nun!
Kekskruemel
 
Beiträge: 15
Registriert: Di 16. Nov 2010, 10:45


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron