2016-08-12 3 views
0

haben eine Struktur:Yii2 :: Controller bewegen, Modelle und Ansichten auf Unterordner

modules/ 
-- office/ 
---- controllers/ 
-------- industryController.php 
-------- industryAttrController.php 
-------- userAdminController.php 
-------- userAdminAttrController.php 
---- modules/ 
-------- industry.php 
-------- industryAttr.php 
-------- userAdmin.php 
-------- userAdminAttr.php 
---- views/ 
-------- industry/ 
-------- industry-attr/ 
-------- userAdmin/ 
-------- userAdminAttr/ 

Ich will es ändern:

modules/ 
-- office/ 
---- controllers/ 
-------- industry/ 
------------ industryController.php 
------------ industryAttrController.php 
-------- user-admin/ 
------------ userAdminController.php 
------------ userAdminAttrController.php 
---- modules/ 
-------- industry/ 
------------ industry.php 
------------ industryAttr.php 
-------- user-admin/ 
------------ userAdmin.php 
------------ userAdminAttr.php 
---- views/ 
-------- industry/ 
------------ industry/ 
------------ industry-attr/ 
-------- userAdmin/ 
------------ userAdmin/ 
------------ userAdminAttr/ 

Ich versuche Controller in Ordner zu verschieben, und ich fand in OfficeModule.php dieser code:

namespace app\modules\office; 

/** 
* office module definition class 
*/ 
class OfficeModule extends \yii\base\Module 
{ 
    /** 
    * @inheritdoc 
    */ 
    public $controllerNamespace = 'app\modules\office\controllers'; 

    /** 
    * @inheritdoc 
    */ 
    public function init() 
    { 
     parent::init(); 
     $this->layout = 'office'; 
    } 
} 

Aber ich kann hier nur einen Ordner für Controller einstellen. Kann ich weitere Wege hinzufügen oder ist es unmöglich?

Auch ich möchte Modelle und Ansichten in Unterordnern auch verschieben.

Ich habe gerade angefangen, Yii2 zu lernen, also bitte geben Sie mir vollständige Antworten.

Vielen Dank.

Antwort

0

Es gibt eine Art "Konvention" hier. Wenn Sie Ihre Logik auf Frontend/Backend trennen wollen, sollten Sie sie wie verschiedene Module arbeiten lassen. Ihre Struktur sollte mehr aussehen wie

backend 
-assets 
-config 
-controllers 
-models 
-runtime 
-views 
-web 
common 
-config 
-models 
frontend 
-assets 
-config 
-controllers 
-models 
-runtime 
-views 
-web 

Die Hauptsache ist, dass Sie Komponenten/controllers/Modelle usw. je nach Modul nicht der Pfad haben sollte - so seinen Weg/alle Sachen nicht Controller/path ...

Dort können Sie die gewünschten Ordner ablegen und die Namespaces korrekt konfigurieren. Solch ein Projekte ist die Yii Advanced-Vorlage:
https://github.com/yiisoft/yii2-app-advanced

Betrachten Sie es und Sie werden wahrscheinlich die Logik hinter dieser Trennung verstehen. Wenn Sie weitere Fragen haben, werde ich Ihnen in den Kommentaren antworten.

+0

Vielen Dank, aber ich habe mit grundlegenden yii2 und habe ein Modul für Admin-Bereich –

+0

Eine andere Möglichkeit zu erreichen, was Sie wollen, ist eine MAIN-Controller, der nur für den Aufruf benötigt Controller z. Sie haben eine Methode in Ihrem MAIN-Controller, die für den Betrieb eines bestimmten Controllers antwortet. Sie rufen dort die benötigte Funktionalität von Ihrem "Kind" -Controller auf und tun Ihre Logik. Diese Verwaltungsklassen können für Modelle/Controller/Ansichten verwendet werden, aber die ganze Idee dahinter ist falsch. Ich rate Ihnen daher nochmals, das gesamte Projekt zu rezensieren und in die richtige Perspektive zu schauen, wenn Sie in der Zukunft nicht problematisch sein wollen. – g9m29

0

Habe gelesen Fehler protokollieren und gefunden Lösung:

1) Have change namespaces (controllers) 
2) After that I had error that can't find view files, so I have move view/industry/ -> view/industry/industry 
3) Have move models to subfolder 
4) Have change all `use` in all files 

Aber jetzt habe ich ein Problem mit Pfad: site.local/Büro/Industrie/Industrie/Index

ich eine Branche entfernen möchte aus Pfad. Wie kann ich das machen?

Verwandte Themen