ich beobachte das yii Framework mittlerweile seit 3 Monaten. Habe mich vor 3 Monaten auch schon versucht reinzuarbeiten. Da hat das ganze aber nicht so geklappt.
Mittlerweile komme ich immer weiter (und schreibe hin und wieder ein paar Sachen in mein öffentliches "IT-Tagebuch" (wiretime.de). Soll jetzt keine Werbung sein, sondern eher vielleicht irgendwann mal ein kleiner Anlaufpunkt für Neueinsteiger (wie ich es immer noch bin) sein.
Aber jetzt zur eigentlichen Frage.
Ich habe damit begonnen eine Gallerie mit Yii zu erstellen.
Ich frage mich aber nun, wo ich die Bilder speichern soll.
Direkt verlinkt soll das Bild nie werden, sondern immer über eine Action aufgerufen werden, die dann das Bild aus dem jeweiligen Verzeichnis lädt.
Bloß wo packe ich die Bilder am besten hin? Gibt es irgendein Verzeichnis, wo solche Daten abgelegt werden?
aus deinen Angaben scheidet das öffentliche Webverzeichnis schon mal aus. Wo du die Bilder hinlegst, hängt stark von deinem Projekt ab - bleibt aber letztlich dir überlassen. Willst du eine Anwendung schreiben, die irgendwann 1.000.000 Bilder verwalten soll wählst du einen anderen Ansatz, als wenn du eine einfache Gallerie-Anwendung bastelts, die du evtl. sogar mal veröffentlichen möchtest, oder die jeder leicht installieren können soll.
Tipp: Definier doch einfach einen eigenen alias in deiner Konfiguration:
return array(
'aliases'=>array(
'pictures'=>'/pfad/zu/deinen/bildern',
//'pictures'=>'application.var.images', // kann auch ein anderer alias sein
...
Und verwend dort, wo du den Bildpfad brauchst Yii::getPathOfAlias(‘pictures’). Außerdem könnte zum Ausliefern der Bilder xSendFile für dich interessant sein - erfordert allerdings ein Modul im Webserver. Das kannst du dann in der Action verwenden, und vorher checken, ob der User z.B. das Bild überhaupt sehen darf.
Den alias kannst du in deiner main.php konfigurieren. Zum Verständnis: In main.php konfigurierst Parameter von CWebApplication (bzw. deren Sub-Komponenten). Wenn du das mal genau studierst, siehst du, dass jeder Eintrag in main.php einer Klasseneigenschaft von CWebApplication entspricht. In ‘components’ sind das wiederum weitere Klassen (z.B. CWebUser für ‘user’, CUrlManager für ‘urlManager’, etc.). Ich würd dir empfehlen, etwas Zeit zu nehmen und das mal ein wenig zu durchdenken - erst dann kannst du richtig durchstarten. Die Klassendoku ist bei mir Anlaufstelle Nr.1 für praktisch jedes Yii-Problem.
Abgesehen vom Guide natürlich, wo du hier infos zu Aliasen findest:
Wieder was gelernt (xSendFile), danke! Dabei dachte ich, dass ich jede Klasse schon zwei mal von oben bis unten durchgegangen bin um interessante Dinge zu finden.