Yii - Controller im Unterverzeichnis
Ich bin vor ein Problem mit dem Yii-Framework-routing.
Habe ich erstellt, controller, nennen wir es TestController.php
Dann, ich brauche, um es in ein Unterverzeichnis Machen, so dass meine Struktur würde wie folgt Aussehen:
controllers/TestController.php
controllers/Make/TestController.php
Des ocurse, wenn ich Sie ändern den Namen, es funktioniert perfekt aber gibt es einen Weg, um die controller mit dem gleichen Namen im Controller-Verzeichnis und ein Unterverzeichnis?
Bearbeiten
Meine URLManager config sieht wie folgt aus:
'urlManager'=>array(
'showScriptName' => false,
'urlFormat'=>'path',
'rules'=>array(
'gii' => 'gii',
'gii/<controller:\w+>' => 'gii/<controller>',
'gii/<controller:\w+>/<action:\w+>' => 'gii/<controller>/<action>',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
Ich habe einen controller Bookmarks
. Da habe ich einige andere Dinge im Zusammenhang zu den Lesezeichen, die ich brauchte, um zu erstellen ein Verzeichnis bookmarks
und legte einige Steuerungen gibt, zum Beispiel Categories
.
Kann nicht zwingen, es zu schaffen.
Edit 2
Gerade überprüft sauber in der Anwendung. Es scheint eine Yii-bug (?).
Edit 3
Ich habe mich verändert import der Konfiguration, wie vorgeschlagen:
'import'=>array(
'application.models.*',
'application.components.*',
'application.controllers.bookmarks.*'
),
Habe ich auch erstellt eine korrekte route-Regel 'bookmarks/<controller:\w+>/<action:\w+>'=>'bookmarks/<controller>/<action>',
.
Meine Dateien-Struktur ist nun wie folgt:
BookmarksController.php
bookmarks/CategoriesController.php
Hier ist eine Ausnahmen, die geworfen wird:
Ausnahme 'CHttpException' mit der Meldung 'Das system ist nicht in der Lage zu finden
die angeforderte Aktion "Kategorien". " in
/home/root/www/yiitesting/framework/web/CController.php:477
- Ich habe eine Frage gestellt auf die offizielle YIi-support-forum. Hier der link: yiiframework.com/forum/index.php?/topic/.... Ich habe auch versucht, um dieses Problem zu reproduzieren (wie in den Foren bekannt gegeben) und vor dem gleichen Problem. Es scheint, das ist unmöglich zu tun, diese Funktionalität mit Yii - das scheint zu sein, wirklich komisch für mich - ich kann nicht quarantee es ist die richtige Antwort, als ich gerade angefangen mit Yii paar Tagen (das war kein problem, aber im Grunde haben nicht genug Erfahrung mit diesem Rahmen für eine nützliche Antwort).
- welche url versuchen Sie zu erreichen "bookmarks/CategoriesController.php"? Wenn Sie gehen, um Lesezeichen/Kategorien es sollten sich für einen actionIndex in der CategoriesController. Stellen Sie sicher, Sie setzen Ihre "Lesezeichen" ULR Regel zuerst. Es sollte im Grunde das gleiche routing als Gii, so dass, wenn das ist, für Sie zu arbeiten, sollte dies als gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bevor Sie ein beliebiges Unterverzeichnis, sich bewusst sein, dass Yii die autoload-Funktion nicht, der Suche Unterverzeichnisse: Yii wollen autoload dem TestController-Klasse im Fall der Controller, also Anwendung hinzufügen.Controller.Machen.* in Ihrem import-Deklaration:
und natürlich müssen Sie eine Regel hinzufügen, um urlManager zu helfen, Yii-look-up-richtigen Controller wie @ldg hat.
Hinweise: in diesem Fall, Yii Aussehen für views/Make/* für die Ansicht.
Sollten Sie in der Lage sein, um aktualisieren Sie Ihre URL-Manager mit einem Eintrag wie:
dann auf, dass die Steuerung per /Make/test[/Aktion]
xception 'CHttpException' with message 'The system is unable to find the requested action "Test"
. Wie es scheint, Yii ignoriert meine routing-Regeln, es zu versuchen, um die Suche für die Test action im Test-controller, aber nicht für Machen/Test-controller. Komisch.Meine nginx config:
Mein Yii urlManager config:
Den folgenden urlManager config funktioniert auch:
Haben Sie versucht, den Zugriff auf durch /Machen/testen anstelle von /testen? Diese Funktion sollte funktionieren out of the box. Cheers