Module Con Yii

Salve stavo facendo delle prove per costruire un pannello di controllo per la gestione del sito!,seguendo la guida ufficiale,il mio scopo è avere un modulo per gli utenti e ovviamente cambiarli il layout che non sarà più quello del front-end.Tramite il modulo gii ho creato il modulo “utenti”, poi l’ho abilitato nel config/main.php


'modules'=>array(

		// uncomment the following to enable the Gii tool

		

		'gii'=>array(

			'class'=>'system.gii.GiiModule',

			'password'=>'12345',

			// If removed, Gii defaults to localhost only. Edit carefully to taste.

			'ipFilters'=>array('127.0.0.1','::1'),

		),


		'utenti',

		

	),

poi ho settato il defaultController

<?php

class DefaultController extends CController

{

public function actionIndex()


{


	&#036;this-&gt;render('index');


}

}

poi nella cartella views del modulo "utenti/views/layouts" ho inserito i files main.php column1.php column2.php

dentro il main ho modificato solo il menu per vedere se caricava il layout esatto




<div id="mainmenu">

		<?php $this->widget('zii.widgets.CMenu',array(

			'items'=>array(

				array('label'=>'Home', 'url'=>array('/default/index')),

				

				array('label'=>'Login', 'url'=>array('/default/login'), 'visible'=>Yii::app()->user->isGuest),

				array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)

			),

		)); ?>

	</div><!-- mainmenu -->



se carico il modulo localhost/applicazione/utenti/ ottengo la pagina di default con il layout esatto, se poi vado a creare un nuovo models e controller view, ad esempio attività;premetto che ho usato sempre il modulo gii per creare il modello attività e le operazioni di crud, cambiando la directory di destinazione: per quanto riguarda le operazione di crud: models class:application.modules.utenti.models.Attivita; Controller Id: utenti/attivita. per la creazione del model ho modificato il path:application.modules.utenti.models

se cerco di accedere a localhost/applicazione/utenti/attivita viene si caricata la pagina con i dati…,ma il layout è quello del frontend e non quello del backend!

l’action index di attività:


public function actionIndex()

	{

		$dataProvider=new CActiveDataProvider('Attivita');

		$this->render('index',array(

			'dataProvider'=>$dataProvider,

		));

	}

mi manca un pezzo…

scordavo in UtentiModule.php


<?php


class UtentiModule extends CWebModule

{

	public function init()

	{


		$this->layoutPath = Yii::getPathOfAlias('utenti.views.layouts');

		$this->layout = 'main';

		// this method is called when the module is being created

		// you may place code here to customize the module or the application


		// import the module-level models and components

		$this->setImport(array(

			'utenti.models.*',

			'utenti.components.*',

		));

	}


	public function beforeControllerAction($controller, $action)

	{

		if(parent::beforeControllerAction($controller, $action))

		{

			// this method is called before any module controller action is performed

			// you may place customized code here

		

			return true;

		}

		else

			return false;

	}

}

Ho risolto!, se può essere utile a qualcuno




public function beforeControllerAction($controller, $action)

  {

    if(parent::beforeControllerAction($controller, $action))

    {

      $controller->layout = 'main';

      return true;

    }

    else

      return false;

  	}

  }



Hai provato semplicemente a modificare la proprietà layout del tuo controller, invece di usare Controller:: beforeControllerAction(); ?

No ora ci provo!, che differenza c’è usando l’evento?

si funziona!, e per quanto riguarda il breadcrumbs io avevo utilizzato sempre il before

si funziona!, e per quanto riguarda il breadcrumbs io avevo utilizzato sempre il before