Empfehlungen: Erweiterte Suche

Modell um Funktionen ergänzen, Aufruf aus Views?

Datenbankobjekte strukturieren und validieren

Modell um Funktionen ergänzen, Aufruf aus Views?

Beitragvon mivogtLU » Mi 20. Jan 2010, 16:52

So nun zwei Fragen auf einmal.

Erste Frage:
Nach allem was ich mal gelernt habe ist das Modell die Klasse.
Enthält also Daten und Methoden/Funktionen.
In den Vorlesungen hat man mir mal eingetrichtert immer eine Methode toString zu basteln die meine Daten der Klasse sauber ausgibt.

Dem entsprechend würde ich nun gerne im Modell eine Funktion OutputFormattedToString() einbauen.

Im Falle des Modell Kunden denke ich an sowas

Code: Alles auswählen
function OutputFormattedToString()
{
var $FormatedString='';
$FormatedString = this->Firma . '<br>' . this->Anrede . '<br>' . this->Name . '<br>' . this->Vorname . '<br>' . ... ;
return $FormatedString;
}


Ist das vom Ansatz her so korrekt und passt das von der Logik ins Modell?

Zweite Frage:
Wenn ich nun in der View eines damit verbundenden Modells bin würde ich gerne auf die Methode s.o. zugreifen.
Also zB im Modell Rechnung an der Stelle Kundenadresse diese mit
im View RechnungAnzeigen
Code: Alles auswählen
echo Kunde->OutputFormattedToString();

zugreifen. - Worauf muss ich achten damit ich keine Bauchlandung mache?

Danke und Grüße

Michael
mivogtLU
 
Beiträge: 46
Registriert: Di 12. Jan 2010, 21:22
Wohnort: 67059
CakePHP-Version: 1.3 final
OS: Linux, Win XP-Vista

Re: Modell um Funktionen ergänzen, Aufruf aus Views?

Beitragvon mbrod » Mi 20. Jan 2010, 23:06

Vorsicht!
Das Model ist eine Klasse von etwa 124 aus dem CakePHP Framework. Ebenso ist View eine Klasse. Siehe dazu:
http://api.cakephp.org/classes
Als CakePHP Programmierer erweitert man in der Regel "nur" die vom Framework vorgegebenen Klassen. Ich behaupte mal, dass so grundsätzliche Sachen, die eine Klasse beinhalten sollte (toString ?) eben in jeder CakePHP Klasse selbstverständlich vorhanden ist.
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Modell um Funktionen ergänzen, Aufruf aus Views?

Beitragvon euromark » Mi 20. Jan 2010, 23:11

generell hat markup (also deine <br>) in dem model nix verloren
ist alles view und damit in elements oder helpern anzusiedeln

viel sinnvoller wäre in diesem fall also im view an entsprechender stelle ein
echo $myFormatHelper->header($data);
das dann z.b. die Anrede etc entsprechend formatiert zurückgibt

und ein helper mit diesem namen und methode zu erstellen :)
denn es kann ja dann auch abwandlungen davon geben (z.b. nur den nachnamen)
und diese einzelfälle werden dann in den helpers entsprechend angesiedelt, statt das model damit vollzustopfen (welches nur für datentransport in- und aus der Datenbank zuständig sein sollte + validierung etc natürlich)
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Helper erstellen für formatierte Ausgabe

Beitragvon mivogtLU » Do 21. Jan 2010, 00:08

ok wenn ich also Daten aus dem Modell in einer View geschönt ausgeben will dann benötige ich einen Helper.
Die lege ich laut Handbuch in app/views/helpers ab.

helper sind php Dateien in denen ich Funktionen habe.

Aber wie bringe ich die nun mit einem bestimmten Modell und mit einem bestimmten Datensatz in Verbindung?

Code: Alles auswählen
DB Tabelle Kunde
ID
Name
Vorname
Adresse
Telefon



/app/views/helpers/kundenoutput.php

Code: Alles auswählen
class Kundenoutput extends AppHelper
{
function KundeToString(id)
{
[b].... wie greife ich auf den Datensatz mit ID zu????[/b]
}
}


Hier brauche ich bitte Hilfe.
Ebenso dann für den Aufruf des Helpers in der View...

Danke und gn8

Michael
mivogtLU
 
Beiträge: 46
Registriert: Di 12. Jan 2010, 21:22
Wohnort: 67059
CakePHP-Version: 1.3 final
OS: Linux, Win XP-Vista

Re: Modell um Funktionen ergänzen, Aufruf aus Views?

Beitragvon euromark » Do 21. Jan 2010, 01:29

wie man den helper aufruft siehe oben
$helper->methode()

und man übergibt ihm eben das aktuelle(!) $record array

hier eines meiner beispiele:
Code: Alles auswählen
    /**
     * format the user name (first_name, ...)
     * @param array $user
     * @param array $options: not used right now
     * 2009-04-13 ms
     */

    function formatDisplayName($user = null, $options = array()) {
        $array = array();
        if (!empty($user['User']['first_name'])) {
            $array[] = $user['User']['first_name'];
        }
        if (!empty($user['User']['middle_name'])) {
            $array[] = '('.$user['User']['middle_name'].')';
        }
        if (!empty($user['User']['last_name'])) {
            $array[] = $user['User']['last_name'];
        }
        $res = implode(' ', $array);
        return $res;
    }
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Helper bauen und verwenden

Beitragvon mivogtLU » Do 21. Jan 2010, 12:30

ok danke
habs hinbekommen

sind wie ich meine 2 Stolperstricke drin.
1.) Datenbereitstellung zur Übergabe an den Helper - muss bei mir per set im Controller erfolgen
2.) Namenskonventionen von Cake verstehen und einhalten

Habe noch ein kleines Problem mit der Formatierung der Ausgabe.
Irgendwo muss es in cake ein basis Layout für alles geben welches Feldnamen und Feldinhalte in 2 Spalten nebeneinander anzeigen lässt; bei mir sind die Spalten zu schmal.

Wo kann ich diese MasterView/CSS anpassen damit meine Spalten breiter werden?
Trifft insb. die view/index


Danke

Gruß

Michael
mivogtLU
 
Beiträge: 46
Registriert: Di 12. Jan 2010, 21:22
Wohnort: 67059
CakePHP-Version: 1.3 final
OS: Linux, Win XP-Vista

Re: Modell um Funktionen ergänzen, Aufruf aus Views?

Beitragvon pocketcrocodile » Do 21. Okt 2010, 21:40

Wo kann ich diese MasterView/CSS anpassen damit meine Spalten breiter werden?
Trifft insb. die view/index
app/webroot/css/ dort findest du alle css dateien deines projektes.
pocketcrocodile
 
Beiträge: 3
Registriert: Mi 2. Dez 2009, 12:49


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron