Yii Framework Forum: Models und Components dynamisch einbinden. - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • This topic is locked

Models und Components dynamisch einbinden. Rate Topic: -----

#1 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 142
  • Joined: 14-May 09

Posted 25 June 2009 - 01:50 AM

Hallo,

ersteinmal möchte ich sagen das ich ein absoluter Neuling auf dem Gebiet MVC & PHP Frameworks bin. Langsam fange ich aber an der Framework zu verstehen und das geniale Prinzip hinter diesem (bzw. MVC).

Also, es geht um folgendes. Wenn ich ein Model für ein Formular benötige lege ich dies (wie in der automatisch erstellten webapp) im Ordner "models" ab.
Damit dieses Model dann auch von Yii gefunden wird füge ich der Config über 'import' folgenden Pfad hinzu: 'application.models.*'.
So, und hier möcht ich was ändern. In der Dokumentation habe ich irgentwo ein Kommetar gelesen in dem steht, dass es zum guten Brauch gehört alle Klassen einzufügen und nicht nur eine einzelne.
Aber mal angenommen ich habe ein riesiges Projekt mit 100ten models (Fiktion), die ja dann alle eingebunden werden, dass würde dann ja immens Zeit kosten.
Kann man nicht irgentwie einstellen das die Models in dem Ordner nur bei bedarf geladen werden?

Ich speichere die Models z.B. unter "models/XyzModel.php" und nenne die Klasse "XyzModel", sollte also kein problem sein mittels autoload.

--------

Und noch eine Frage am Rande, beim durcharbeiten von "Working with Forms" in der Doku wird ganz unaufällig folgender Codeschnippsel erläutert:
public function authenticate($attribute,$params)
    {
        if(!$this->hasErrors())  // we only want to authenticate when no input errors
        {
            $identity=new UserIdentity($this->username,$this->password);
            if($identity->authenticate())
            {
                $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
                Yii::app()->user->login($identity,$duration);
            }
            else
                $this->addError('password','Incorrect password.');
        }
    }


Aber es wird zu keiner Zeit geschrieben wie, und wo die Klasse "UserIdentity" angelgt wird/werden muss?! Irre ich mich da? Hab ich was übersehen?
0

#2 User is offline   Lollinger.de 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 79
  • Joined: 19-May 09
  • Location:Ulm, Germany

Posted 25 June 2009 - 03:18 AM

Hallo,

die Klasse UserIdentity wird automatisch vom Framework um Ordner Components angelegt und eingebunden. Zum einbinden. Alles was im Ordner models/extensions/components/view liegt wird automatisch eingebunden, es ist nicht notwendige ein model manuell einzubinden.

Grüße

Martin
0

#3 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 25 June 2009 - 03:52 AM

Importieren != Includen.

Alle Ordner, die in der Konfiguration importiert wurden, werden zur Laufzeit zum PHP-Includepfad hinzugefügt. Eingebunden werden die Klassendateien aber nur, wenn sie tatsächlich im Code verwendet werden (lazy loading per autoload). Es ist daher in Ordnung, ganze Verzeichnisse zu importieren.
0

#4 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 142
  • Joined: 14-May 09

Posted 25 June 2009 - 05:26 AM

Oh, danke euch beiden...

Zum testen hatte ich ein echo Statement in ein Model geschrieben welches auf meiner Seite ausgegeben wurde, daher dachte ich die Models werden icudiert. Aber ich habe das Model vermutlich unabsichtlich benutzt.

Nochmal zur UserIdentity, diese Klasse wird bei mir nicht automatisch im ordner components angelegt, zumal meine Applikation ja auch nicht weiß wie die authentifizierung von statten geht (DB, Array oder sonst wie)...

Auch models und components werden bei mir nur eingebunden wenn ich es explizit im configarray mit angebe... (view wird automatisch eingebunden, und beie extensions weiß ich es nicht, soweit bin ich noch nicht)

Die Applikation wurde übrigens nicht mit yiic angelegt.
0

#5 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 25 June 2009 - 05:29 AM

UserIdentity wird nur in der Demoanwendung mit yiic angelegt. Ansonsten muss man die Klasse selber schreiben. Hast du dir mal das Blog-Tutorial durchgelesen? Da wird schön erklärt, wie das mit der UserIdentity so läuft:

http://www.yiiframew.../prototype.auth
0

#6 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 142
  • Joined: 14-May 09

Posted 25 June 2009 - 06:37 AM

Ajaa.. Danke nochmal, hab jetzt mein erstes funktionierends Formular hinbekommen.
Jetzt kommt erstmal Active Record dran.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • This topic is locked

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users