Einflussnahme auf die generierten CRUD-Seiten

Hallo Mike, hallo alle anderen Foren-Benutzer

ich habe mich jetzt definitiv in Yii eingearbeit und fühle mich sehr wohl :slight_smile:

aber eine kleine Frage habe ich, die mir die Dokumentation nicht beantwortet:

Die Seiten, die per CRUD generiert werden, also <model>/view/admin.php, create.php, usw, usw haben, nach dem generieren immer das gleiche Layout bzw. das gleiche Aussehen. Gibt es eine Möglichkeit, in das Generationsverfahren einzugreifen?

Beispiel: ich möche 20 Modelle aus meinen kreuz-und-quer verknüpften Tabellen generiern. Würde ich das tun, müsste ich ja 20xcreate.php anpasse, 20xadmin.php usw,usw - z.B um deutsche Texte hineinzuschreiben, oder weil ich jedesmal ein Bildchen für "anlegen" haben will, oder warum auch immer…

diese Arbeit könnte ich mir doch sparen, wenn ich den CRUD-Generator anpassen könnte.

Habt ihr meine Frage verstanden? Welche Möglichkeiten gibt es da bei Yii, ohne in den original yii-frameworkquelltext einzugreifen?

Wenn es keine gibt, würde ich nämlich gerne ein erarbeiten… vielleicht als Yii-Modul…

danke im voraus für antworten!

Eine Lösung wurde hier beschrieben:

Du überschreibst die Klasse CrudCommand mit deiner eigenen und legst sie z.B. nach protected/commands/shell/MeinCrudCommand.php. In dieser Klasse überschreibst du lediglich den Konstruktor und setzt dort den TemplatePath (siehe Beispiel im Link). Dann kopierst du die Original-Templates aus dem Framework-Verzeichnis in dein gewünschtes Verzeichnis (z.B. protected/commands/views/shell/crud) und kannst diese dort anpassen.

Danach sollte dein eigenes Crud-Kommando in der yiic shell auftauchen.

Funktioniert einwandfrei (nachdem ich herausgefunden habe, dass Commands auch foobarCommand.php heissen müssen, damit Yii es erkennt) ! Danke für den Hinweis.

Gibt es eine Sammelstelle für vorgefertigte, übersetzte CRUD-Templates in Deutsch oder anderen Sprachen? Oder ist es geplant, für eine zukünftige Yii-Version CRUD-Templates mit anzubieten? Ich fände das interessant und spannend.

Kompliziert wird es ja z.B. auch, den richtig String abhängig vom Artikel des Models zu wählen. Ich könnte mir vorstellen, dass man dem Model ein Geschlecht gibt $model->gender, und abhängig vom Geschlecht des Models die Texte anders generiert werden, Beispiel

Macht das Sinn?

Quote

Gibt es eine Sammelstelle für vorgefertigte, übersetzte CRUD-Templates in Deutsch oder anderen Sprachen? Oder ist es geplant, für eine zukünftige Yii-Version CRUD-Templates mit anzubieten? Ich fände das interessant und spannend.

Noch nicht. Aber ich denke, dass auch das in einer späteren Version mit angeboten wird.

Quote

Kompliziert wird es ja z.B. auch, den richtig String abhängig vom Artikel des Models zu wählen.

Klingt interessant, aber ich fürchte, eine allgemeine Lösung (für alle Sprachen) ist hier schon schwieriger zu bewerkstelligen. In Yii selbst wird das daher wohl nicht aufgenommen werden. Aber wenn du was brauchbares zusammenbaust, kannst du es ja immer noch als behavior in einer Erweiterung veröffentlichen. ;)

Hi zusammen!

Habe das jetzt so gemacht wie im Link beschrieben und mein neues Command taucht auch in der shell auf, aber sobald ich darauf zugreiffen will bekomme ich folgenden Fehler:

Der Klassenname, der Name des PHP-Files passt auch dazu - irgendwo dachte ich geht im der Pfad zu <myapp>/protected/commands/shell ab, aber das kann es auch nicht sein weil ich ein "rbac" Kommando auch da drinnen habe und das funktioniert.

Der Inhalt des cruddecommand.php ist exakt gleich wie im Beispiel beschrieben und es ist auch völlig egal ob ich darin etwas auskommentiere oder nicht.

Sollte vielleicht dazusagen das ich das ganze unter xampp betreibe.

Hat jemand noch eine Idee?

LG,

martin

Hmm. Hast du den Dateinamen nochmal genau kontrolliert? Stimmt der Klassenname? Da du unter Windows bist, können es die Zugriffsrechte wohl auch nicht sein.

Hi, Groß-/Kleinschreibung ist auch noch wichtig :frowning:

Jetzt bekomme ich zwar eine exception - irgendwas mit eval, aber um das kümmere ich mich später…

Marin