Errore 404

Ciao,

ho un piccolo problemino sicuramente dovuto a qualche mancanza nel Controller, solo che non riesco a venirne a capo.

Allora vi spiego, ho creato principalmente due cartelle:

  • site (quella di default)

  • admin

Esse utilizzano un layout diverso tra loro.

Dopo aver creato il controller per la cartella admin, ho creato un CRUD per la gestione delle categorie, ho inserito questo codice nella index della cartella admin:




array('label'=>'Categorie', 'url'=>array('/admin/categorie/index'), 'visible'=>!Yii::app()->user->isGuest),



E il risultato di tutto ciò è:


The system is unable to find the requested action "categorie".

Non son sicuro, ma credo che:

‘url’=>array(’/controller/action’) tradotto nel tuo caso,


array('label'=>'Categorie', 'url'=>array('/admin/categorie/index'), 'visible'=>!Yii::app()->user->isGuest),

lui cercherà un AdminController con all’interno una actionCategorie. Tu hai questa struttura ?

Nel file AdminController non ho nessun actionCategorie…

Il layout non lo devi definire nella querystring. Il tuo problema lo conosci già:

ti manca la action categorie. In pratica dovresti creare dentro ad AdminController la action actionCategorie.

E prova a scrivere dentro /protected/controllers/AdminController.php

public function actionCategorie()

{

//non faccio nulla

}

e aggiorna la pagina(F5) continua a dire lo stesso errore ?

Cioè?

Pagina bianca…

Perfetto!! Allora vuole dire che funziona. Infatti




public function actionCategorie()

{

//non faccio nulla

}



non fa nessun render e tu non vedi nulla. Prova a metterci una banalissima echo "EVVAI"; e vedrai che la pagina bianca esulterà :-p =)

Siamo sulla buona strada … :rolleyes: perlomeno abbiam capito qual’era il problema !

Ho provato a scrivere:




	public function actionCategorie()

	{

		$this->render('/categorie/index');

	}




E mi restituisce una exception:




AdminController cannot find the requested view "/categorie/index".



ma l’hai creata la view /protected/view/categorie/index.php ?

modifica in:


	

public function actionCategorie()

	{

		$this->render('index');

	}



basta il nome della View,

lui cercherà all’interno di /protected/views/admin/ il file index.php

C’è qualcosa che non va, ho scritto:




	public function actionCategorie()

	{

		$this->render('index');

	}



Mi fa il render della index della cartella admin:




admin/categorie

You may change the content of this page by modifying the file /var/www/test/protected/views/admin/index.php.



La view si trova in:




protected/views/admin/categorie/



Prova con $this->render(’//admin/categorie/index’);

Una domanda. Ma come mai si trova in quella posizione quel file? Come stai sviluppando questa applicazione. A mano oppure usi gii o yiic via console?

Ho risolto con:




		$dataProvider=new CActiveDataProvider('Categorie');

		$this->render('//admin/categorie/index',array(

			'dataProvider'=>$dataProvider,

		));



Uso gii, e gli ho passato come nome del controller: admin/categorie.

Mi sorge un dubbio, se io voglio implementare anche il create, update, etc…come devo fare?

Se usi gii (http://localhost/tua_applicazione/index.php?r=gii) avrai la vita più facile, quando crei un Model e rispettivo Controller farà tutto lui.

Se vai avanti a creare controller chiamandoli ciao/mondo … non lo so. Mi dispiace ma quello non è yii. Nel tuo modo devi rinominare mezzo mondo.

Scusate forse mi sono espresso male…allora “Categorie” l’ho creato con gii, quello che volevo dire io è: se io voglio inserire i link per le altre action di categorie (tipo create,delete,etc) in index.php della cartella admin come gestisco il controller? Dato che c’è già un actionCategorie…

Dove si trova actionCategorie?

in AdminControlller