2009-07-15 11 views
9

Hy, erstellenbester Weg, um einen Admin Abschnitt in Grails

Ich frage mich, was ist der beste Weg, um einen Admin (Backend) Abschnitt in einer Grails App erstellen?

Ich möchte einen Ordner "Admin" im Ordner "Controller" von Grails erstellen, um alle meine Admin-Controller zu setzen. Muss ich dann manuell die URL-Zuordnung für jeden Admin-Controller erstellen?

Ich habe bereits all meine Frontend GSP mit dem genernate-all Befehl erzeugt, die eine Domain Klasse nimmt aber wissen, wie kann ich meine CRUD für meinen Admin-Bereich (mit der gleichen Domain-Klasse) zu erzeugen. Bin ich geschraubt?

Vielen Dank für Ihre Tipps!

Antwort

11

Meine Präferenz ist eine separate Anwendung für admin. Kleben Sie alle Ihre Domain-Klassen in ein Plugin und installieren Sie dieses Plugin sowohl in der Admin-Anwendung als auch in der Consumer-Appliance.

Auf diese Weise können Sie die Controller nach Herzenslust optimieren und sich nicht darum kümmern, dass Endbenutzer sie schlagen. Shared Services können auch im Domain-Plugin sein.

Es gibt eine spezielle Datei, die Sie in Ihre grails-app/conf namens BuildConfig.groovy einfügen können. Dort können Sie "lokale" Plugins wie das Domänen-Plugin angeben, die automatisch in den Klassenpfad gebracht werden, ohne das Plugin zu packen/installieren . Macht es super einfach.

+0

Vielen Dank! Ich mag die Art, wie du den Admin und die Front spaltet. Muss ich über die "BuildConfig.groovy" -Datei die "grails.project.plugins.dir" -Eigenschaft hinzufügen, um die Plugin-Domänenklassen in meinen Grails-App-Klassenpfad zu bringen? –

+0

Nein, lass es einfach wissen, wo das Plugin auf deiner lokalen Festplatte ist. Hier sind die Inhalte meiner Datei grails-app/conf/BuildConfig.groovy in einer Anwendung, in der ich mein "Domain" -Plugin installiert habe: grails.plugin.location.domain = "../domain" Es automatisch fügt alle notwendigen Dinge zu meinem Klassenpfad von diesem Domain-Plugin beim Ausführen/Verpacken/Warren der App hinzu. (seltsame Formatierung auf Kommentare hoffentlich macht das Sinn) –

+0

Oh ok, ich verstehe! Vielen Dank für deine Hilfe! –

2

Sie könnten Ihre Admin-Controller wie jeden anderen Controller erstellen und filter verwenden, um sicherzustellen, dass nur angemeldete Benutzer mit Administratorrechten auf sie zugreifen können.

+0

Ok, es funktioniert gut, wenn ich manuell einen zweiten Controller erstelle, aber wie erzeuge ich 2 Controller aus 1 Domain-Klasse? (sowas wie/CommentController und/admin/CommentController aus meiner Comment.groovy Klasse?) –

+0

+1 Schön, genau das was ich gesucht habe :). – helpermethod

1

Sehr spät kommt, aber hier ist eine Möglichkeit, die nützlich sein könnte, zumindest für eine kleinere Anwendung (ich bin mit Grails 2.0):

In conf/UrlMappings.groovy:

class UrlMappings { 
    static mappings = { 
    "/admin/$controller/$action?/$id?"{ constraints { // apply constraints here 
     } } 
    '/admin' (controller: 'yourMainController', action: 'list') 
    '/' (controller: 'public', action:'index') 
    // For the PublicController to handle *all* other requests (like /foo/bar/): 
    // '/**' (controller: 'public', action:'index') 
    "500"(view:'/error') 
    } 
} 

Hinweis Wie Sie sehen können, ist dies in keiner Weise gesichert.