Errore 404

Se ho capito quello che vorresti ottenere, è "racchiudere" dentro "admin" tutte le funzionalità di admin. La tua logica è corretta. Per fare questo hai pensato di creare un controller Admin e di mettere dentro ad ogni action un crud. Vedi le categorie. Ma questo non è il modo corretto di fare con yii.

La logica del controller e delle action è che se tu hai delle categorie, prima crei la tabella categorie. Quindi crei il model categorie. In ultima istanza il crud. Creando il crud, viene generato tutto un elenco di action per quel controller. Avresti categorie/create, categorie/update, …

CategorieController::actionCreate();

CategorieController::actionUpdate();

Però se ho bene inteso … tu stai cercando di ottenere admin/categorie. Per ottenere questo hai pensato di creare un controller "admin/action". Dove sta il problema … ?

Il problema è che il tuo contenitore va creato come modulo. Devi proprio creare un modulo admin. Per creare un modulo admin devi andare nella console di yii e digitare:

>>> module admin

A quel punto potrai creare il controller delle categorie DENTRO a quel modulo.

Per capirci, le querystring diventeranno:

index.php?r=admin/categorie/index

index.php?r=admin/categorie/create

index.php?r=admin/categorie/update

index.php?r=admin/categorie/view

E tutto si troverà dentro alla cartella

/protected/modules/admin/…

Spero di aver analizzato bene il tuo problema e di averti aiutato a risolverlo.

E qualche sarebbe il giusto modo di fare con yii?

Vorrei semplicemente creare dei crud che possano essere visti ed utilizzati solo dagli admin. (Ecco perchè admin/categorie…)

Ora, ho fatto come hai detto tu, ma mi sorge una domanda: devo eliminare AdminController.php?

Ecco i file generati dal model che ho creato:

modules/admin/AdminModule.php

modules/admin/components

modules/admin/controllers/DefaultController.php

modules/admin/messages

modules/admin/models

modules/admin/views/default/index.php

modules/admin/views/layouts

Esatto, admin/categorie non ti serve più. Per limitare la visiblità di admin/categorie/* devi assicurarti che tutti abbiamo le roles corrette. Per semplificarti le cose, potresti fare in modo che tutte estendano un’unica classe con le roles settate per accettare solo gli utenti admin.

Sto facendo un pò di confusione, quindi per capirci di più ho eliminato il crud Categorie e ne ho creato un’altro Nazione, non più admin/nazione.

Quindi, il link è:




index.php?r=nazione



Come limito la visibilità solamente gli admin?

  1. ma ci hai provato a fare il modulo admin? Ripeto, il "modulo": non il controller.

  2. vuoi limitare la visibilità AGLI admin o all’utente admin?

AGLI admin.

Non hai risposto alla prima domanda.

In ogni caso se vuoi gestire il permesso di un admin, devi assicurarti che l’utente abbia un particolare permesso. Quindi devi avere un database che usa l’RBAC di yii. Questo lo hai fatto?