2013-02-19 8 views
6

Ich versuche, von CodeIgniter zu CakePHP zu wechseln und kann nicht herausfinden, wie man ein Admin-Panel am besten implementiert. In CI würde ich zwei verschiedene Anwendungen erstellen, eine für das Frontend und eine für das Admin-Panel.Die beste Methode zum Implementieren des Admin-Steuerfelds in CakePHP

Nach googeln um, ich habe drei Möglichkeiten gefunden Admin-Panel in CakePHP zu implementieren:

  1. Routing - Ich will nicht, dies benutzen, wie ich von Controller/Models wollen für Frontend und Admin getrennt sein Panel
  2. Plugin
  3. Zwei separate Anwendungen

sollte ich Plugin Admin-Panel zu implementieren oder sollte ich haben getrennte Anwendungen? Irgendwelche Vorteile von einem über den anderen?

+0

http://stackoverflow.com/questions/14474023/how-can-i-implement-multi-template-in-cakephp/14475492# 14475492 –

+0

Gehen Sie mit 1. Routing, definitiv. –

Antwort

16

ich normalerweise das Admin/Backend als Plugin entwickeln. Dadurch bleiben Ihre Backend/Admin-Controller/Ansichten/Modelle vom Frontend getrennt und Sie müssen nicht durch die einzelnen Stylesheets, Layouts usw. springen.

Ein weiterer Vorteil ist, dass sowohl Front- und Backend noch Teil derselben Anwendung ist, so dass, wenn gewünscht, Sie können Aktien Logik/Komponenten, zum Beispiel können Sie Helfer setzen, die verwendbar sind, sowohl für die Front - und backend in ein anderes plugin (zB plugins/Shared oder plugins/Handytextools) und benutze beides, wo immer du willst

Als Faustregel gilt; Fügen Sie Komponenten, die für andere Projekte wiederverwendbar sein können, in ein separates Plugin ein, so können Sie diese Plugins einfach anderen Projekten ohne Probleme hinzufügen. Halten Sie Ihre Plugins einfach; Es ist kein Problem, ein Plugin zu erstellen, das nur ein oder zwei Helfer oder Modelle und ein paar JavaScript-Dateien enthält. Dadurch wird es einfacher, die Plugins auszuwählen, die Sie für ein Projekt benötigen. Sobald Cake die Dateispeicherorte aller Klassen in Ihren Plugins "zwischengespeichert" hat, sollte der Aufwand für separate Plugins minimal sein.

Zurück zum Plugin 'admin'. Versuchen Sie, nur Code spezifisch für dieses Projekt in Ihrem Admin-Plugin und wiederverwendbare Teile in einem anderen (z. B. generische Stylesheets und Layouts für Admin-Panels). Sie werden in der Lage, ein Administrator-Plugin für Ihr nächstes Projekt starten mit minimalen

Viel Glück mit Ihrem Projekt Codierung und genießen CakePHP

+1

Danke für die Erklärung. Leider kann ich dir keine Antwort geben, da ich keine Reputationspunkte benötige. –

+0

Ich habe für Sie upvoted. thaJeztah hat mir bei meinen CakePHP Problemen sehr geholfen. – bowlerae

+0

@bowlerae danke für die Abstimmung, ich hoffe meine Antwort wird auch für andere Menschen lehrreich sein :) – thaJeztah

0

Alt und bezieht sich auf CakePHP 1.3, ist aber immer noch eine Frage sollten Sie überprüfen: CakePHP admin panel

Die Kuchen Art und Weise routet. Ich würde mit einem Plugin wie CakeDC Users gehen, das die Dinge einfacher macht.

+0

Ich habe den Beitrag, auf den Sie sich beziehen, bereits überprüft, und dieser verweist nur auf ein Routing-basiertes Admin-Panel, das ich nicht verwenden möchte. Ich würde es vorziehen, meine Controller/Modelle getrennt zu halten, wenn ich kann. –

+0

Sie können ein "admin" -Plugin verwenden, aber ehrlich gesagt ist diese Idee stinkend und Sie werden mit doppeltem Code enden. Ich musste mich in Projekten schon einmal mit solchen Situationen auseinandersetzen und ihn für das Präfix-Routing umgestalten. In der Tat erhalten Sie nichts, indem Sie den Code zum Beispiel in ein separates Plugin stecken. – burzum

4

Wenn Sie Ihre Controller und Modelle getrennt halten möchten - ich würde mit einer separaten App gehen, obwohl Sie am Ende mit einer Reihe von doppelten Code zwischen den Apps (Wartung Kopfschmerzen warten auf).

Meine Wahl wäre Admin-Routing und ein Admin-Thema.

aktivieren Admin-Routing in /app/Config/core.php

In AppController before():

$this->theme = isset($this->params['admin']) ? "Admin" : "Site"; 

Verschieben Sie alle Ihre Website Ansichten und Vermögenswerte in/app/Ansicht/Themed/Site/

erstellen Sie Ihre Admin-Themen in/app/Ansicht/Themed/Admin

+0

Was ist mit dem Plugin-Ansatz? Ich habe ein oder zwei Admin-Plugins für CakePHP gegoogelt. Bietet das zusätzliche Vorteile gegenüber separaten Apps? –

+0

Bitte lesen Sie meine Antwort, ich habe versucht, die Vorteile eines Plugins zu erklären.Die Entwicklung einer separaten * Anwendung * für das Admin-Panel ist wahrscheinlich nur dann wünschenswert, wenn das Admin-Panel für die Verwaltung mehrerer Websites ausgelegt ist. Wenn nicht, würde ich keine separate Anwendung erstellen – thaJeztah

+0

Ich persönlich fühle mich Routing-basierte Admin ist nur für einfache Admin-Panels nützlich. Außerdem mag ich diese Idee von Admin- und Frontend-Code in der gleichen Datei nicht. Beschlossen, das Plugin für jetzt zu gehen. –

0

Sie könnten Admin-Routing verwenden. Check out:

http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing

Eine andere Lösung -die ich wirklich einfach zu Implementing finden, ist wie folgt:

In Ihrem AppController:

public function beforeFilter(){ 
     $this->set('current_user', $this->Auth->user()); 
     } 

Dies macht die $ current_user verfügbar in deiner App

dann in der Ansicht-Dateien, können Sie überprüfen:

<?php if ($current_user['role'] == 'admin'){/*place code for admin users to see here*/} ?> 
    <?php if ($current_user){/*place code for logged-in users to see here*/} ?> 
+0

Admin-Präfix ist eine nette Funktion für schnelle, Ad-hoc-Admin-Funktionalität, aber nicht Front-und Back-End-Funktionalität zu trennen. Wenn Sie beide trennen möchten, ist das Präfix-Routing nicht der beste Weg, dies zu implementieren. Außerdem ist es schwierig, zu viel Logik in Ihre Ansichten zu bringen (wenn Admin etc), besonders für größere Projekte. – thaJeztah

0

Ich weiß, dass dies ein alter Thread ist. Aber ich würde gerne fragen, ob jemand Probleme hatte, das Admin-Panel als Plugin zu implementieren. Vor allem Doppelung von Code.

Zum Beispiel implementieren Sie eine E-Commerce-Website. Sie haben einen OrderController sowohl im Haupt- als auch im Admin-Plugin. Denkst du nicht, dass es schwer ist, die Logik an zwei Orten zu halten?

Wie wäre es mit nur einem Hauptcontroller. Es dient zwei Zwecken. Ein als API dann der Controller für Ihre Admin Webapp.

Ihre öffentliche Seite würde dann grundsätzlich über die API kommunizieren, um Daten abzurufen.

Denken Sie, dass es eine gute Idee ist?

0

können Sie Admin Ansichten wie admin_index.ctp verwenden gerade diese

//Configure::write('Routing.admin ändern, 'admin');

zu

Configure :: write ('Routing.admin', 'admin');

in core.php und in der Steuerung hinzuzufügen admin_index() Funktion

Verwandte Themen