Deutsche URLs

Hi,

ich bin grad dabei mir das Yii-Framework etwas anzusehen.

Was mich generell interessiert, wenn mein Controller ContactController heißt dann wird in der URL contact stehen. Ich würde gern das dann kontakt dort steht, genauso bei anderen Seiten (help, faq, products). Die Bezeichnuung der Controller erfolgt ja in Englisch, aber es sollen in der URL dann die deutschen Worte stehen.

Wie kann ich das einstellen?

Hi und willkommen,

du könntest z.B. URL-Regeln dafür verwenden. Siehe hier:

http://www.yiiframework.com/doc/guide/1.1/de/topics.url#benutzerfreundliche-urls

Hi,

ich müsste also dann für jeden Menüpunkt eine Regel verwenden?

Kann man denn den Aufruf der englischen URL verhindern oder kann ich das nur z.B. über die .htaccess machen mit ensprechenden rewrite rules? Ich möchte nicht den gleichen Inhalt unter 2 verschiedenen URL erreichbar machen.

Du kannst useStrictParsing in der urlManager-Komponente auf true setzen, damit werden nur noch URLs akzeptiert, die auf eine der definierten Regeln passen.

Danke für die Hilfe.

Im Gegensatz zu manch anderem Framework is die Doku ja sehr gut :slight_smile: Ich weiß nur nicht wo man genau immer nachsehen muss :slight_smile:

Kein Problem.

Yii ist ziemlich umfangreich, da braucht man schon etwas Zeit um reinzukommen. Der Guide ist auch ziemlich kompakt gehalten, so dass wiederholtes Durchlesen auch nix schadet. Wenn man nebenbei Sachen ausprobiert erschließt sich bei jedem Lesen wieder was neues. Am besten, man macht sich aber auch mit der Klassenreferenz (s.o.) intensiv vertraut.

Hi,

nun muss ich doch nochmal nachfragen.

Wenn ich useStrictParsing benutze, und ich habe als Regeln noch <controller… > drin, dann müsste ich diese Regel rauslöschen oder? Sonst würde diese Regel ja immer zutreffen und ich kann auch die englische URL aufrufen

Meinst du sowas hier?




'/blabla/<controller>/<action>' => '<controller>/<action>',



Falls ja: Richtig, sowas muss dann raus. Falls nein, poste mal deine Regeln.

wenn deine seite deutsch bleibt, dann kannst du auch einen KontaktController erzeugen mit deutschen actions, dann sparst du dir den Weg über das Routing eben

genau, das hatte ich gemeint. ok danke.

Ds stimmt, aber die Bezeichnungen sind ja zum größten Teil eh alle immer in Englisch.

PS: Grüße aus Hannover nach Hannover :slight_smile:

noch eleganter ist, ihr löst das mit einer controllerMap

‘deutscher Name’ => ‘Controller’

siehe hier: http://www.yiiframework.com/doc/api/1.1/CWebApplication/#controllerMap-detail

Ha! Genau das hab ich gestern gesucht, aber auf die Schnelle nicht gefunden. Das sollte natürlich auch gehen. Wobei dann aber die Controller vermutlich auch noch unter dem "originalen" Namen erreichbar sein dürften. Hab ich aber noch nie probiert.

Das werde ich auch mal probieren mit der Map.

Falls die Seite noch unter dem anderen Namen erreichbar sein sollte, kann man das ja per htaccess verhindern, obwohl das ja wieder etwas mehr Aufwand wäre.

Aber trotzdem danke für den Hinweis. Gibt ja noch so viel zu lernen :slight_smile: