2016-07-31 96 views
1

Kann mir jemand sagen, was ist der offizielle Weg, CRUD für Admin-Back-End zu erstellen?Wie man Admin (Präfix) Code mit CakePHP 3 backe?

In CakePHP 2 wurde der verbackene Code mit 'admin_' vor den Funktionsnamen und den View-Dateien erweitert. In CakePHP scheint es, dass ich keine direkten Informationen darüber finde, wie es weiter gemacht wird. Die Backkonsole fragt nicht mehr nach Admin. In diesem Thema: https://github.com/cakephp/bake/issues/28 Ich sehe, dass sie erwähnen, die - Präfix-Erweiterung zu verwenden, aber dann wird der Controller in einem separaten/Admin-Ordner platziert, während die CRUD-Funktionen behalten ihren normalen Namen. Und in einigen Teilen des Kochbuchs() sehe ich immer noch Funktionen wie admin_view.

Also kann mir jemand sagen, was ist der offizielle 'Cake'-Weg, um dies ab 3.2 zu tun?

+0

Und in einigen Teilen des Kochbuchs: http://book.cakephp.org/3.0/en/vie ws.html # Layouts – Lucky

Antwort

0

So funktioniert jetzt in CakePHP 3, Präfix-Methoden sind weg, Präfixe generieren jetzt separate Controller in Sub-Namespaces, für kleinere/einfachere Controller und für die richtige Trennung, nicht nur auf Controller-Ebene, sondern auch auf Template Ebene, wo die Vorlagen voraussichtlich in separaten Ordnern entsprechend platziert werden.

Das Beispiel admin_view, auf das Sie sich beziehen, ist nur ein Beispiel, das zeigen soll, wie ein benutzerdefiniertes Layout für bestimmte Aktionen manuell festgelegt wird. Es hat nichts mit Präfixrouting zu tun.

Also, wenn Sie Präfix-Routing verwenden möchten, dann ist die "offizielle" Möglichkeit, die --prefix Option zu verwenden.

Siehe

+0

Danke. Ich verstehe. Ich habe jedoch ein Problem mit den Back-Vorlagen für den Admin. Ich habe eine Controller-Bake-Datei in src/Template/Bake/Controller/Admin/controller.ctp gelegt, aber das Backen eines Controllers mit --prefix admin benutzt diese Datei nicht. Kannst du mir sagen, was ich falsch mache? – Lucky

+0

Kann mir jemand sagen, wo/wie die neue Bake-Vorlage für das Präfix-Routing gespeichert werden soll? Wenn ich einen Controller mit --prefix Admin backe, erstellt er die Datei Controller/Admin/controller.php aus der Datei Template/Bake/Controller/controller.php statt aus der Datei Template/Bake/Controller/Admin/controller.php. Aber ich möchte einen anderen Code im Hauptcontroller und im Admin/Controller generieren. – Lucky

+0

@Lucky Bitte öffnen Sie eine neue Frage. – ndm

3

auch Wenn Sie Regler mit Kuchen backen erstellen möchten. Sie können mit folgendem Befehl tun:

bin/cake bake controller --prefix admin users 

Zur Ansicht:

bin/cake bake template --prefix admin users 

Sie den Admin-Ordner in der Vorlage Verzeichnis erstellt, dann schafft es den Ordner für Benutzer, dann schließt er die Dateien . für die Admin-Präfix Ordnerstruktur wie template/admin/users/index.ctp

See official cookbook documentation

Auch in Ihrer config/Routen.php hinzufügen:

Router::prefix('admin', function ($routes) { 
    $routes->connect('/', ['controller' => 'Users', 'action' => 'index']); 
    $routes->extensions(['json', 'xml']); 
    // All routes here will be prefixed with `/admin` 
    // And have the prefix => admin route element added. 
    $routes->fallbacks('DashedRoute'); 
}); 
0

unten ist das backen Befehl alle Präfix Controller und Vorlagen für die Benutzer-Tabelle

cake bake all users --prefix admin 

zu backen Und hier wird die Route Code zu machen, arbeiten: -

Router::prefix('admin', function ($routes) { 
     // Because you are in the admin scope, 
     // you do not need to include the /admin prefix 
     // or the admin route element. 
     $routes->connect('/', ['controller' => 'Users', 'action' => 'index']); 
     $routes->extensions(['json', 'xml']); 
     // All routes here will be prefixed with `/admin` 
    //$routes->connect('/admin', ['controller' => 'Order', 'action' => 'index']); // call other controller like this 
     // And have the prefix => admin route element added. 
     $routes->fallbacks('DashedRoute'); 
    }); 

Dies wird für mich arbeiten hoffe, es wird für Sie arbeiten :)