Added new (clean) yii boilerplate
This commit is contained in:
130
framework/gii/generators/controller/ControllerCode.php
Normal file
130
framework/gii/generators/controller/ControllerCode.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
class ControllerCode extends CCodeModel
|
||||
{
|
||||
public $controller;
|
||||
public $baseClass='Controller';
|
||||
public $actions='index';
|
||||
|
||||
public function rules()
|
||||
{
|
||||
return array_merge(parent::rules(), array(
|
||||
array('controller, actions, baseClass', 'filter', 'filter'=>'trim'),
|
||||
array('controller, baseClass', 'required'),
|
||||
array('controller', 'match', 'pattern'=>'/^\w+[\w+\\/]*$/', 'message'=>'{attribute} should only contain word characters and slashes.'),
|
||||
array('actions', 'match', 'pattern'=>'/^\w+[\w\s,]*$/', 'message'=>'{attribute} should only contain word characters, spaces and commas.'),
|
||||
array('baseClass', 'match', 'pattern'=>'/^[a-zA-Z_][\w\\\\]*$/', 'message'=>'{attribute} should only contain word characters and backslashes.'),
|
||||
array('baseClass', 'validateReservedWord', 'skipOnError'=>true),
|
||||
array('baseClass, actions', 'sticky'),
|
||||
));
|
||||
}
|
||||
|
||||
public function attributeLabels()
|
||||
{
|
||||
return array_merge(parent::attributeLabels(), array(
|
||||
'baseClass'=>'Base Class',
|
||||
'controller'=>'Controller ID',
|
||||
'actions'=>'Action IDs',
|
||||
));
|
||||
}
|
||||
|
||||
public function requiredTemplates()
|
||||
{
|
||||
return array(
|
||||
'controller.php',
|
||||
'view.php',
|
||||
);
|
||||
}
|
||||
|
||||
public function successMessage()
|
||||
{
|
||||
$link=CHtml::link('try it now', Yii::app()->createUrl($this->controller), array('target'=>'_blank'));
|
||||
return "The controller has been generated successfully. You may $link.";
|
||||
}
|
||||
|
||||
public function prepare()
|
||||
{
|
||||
$this->files=array();
|
||||
$templatePath=$this->templatePath;
|
||||
|
||||
$this->files[]=new CCodeFile(
|
||||
$this->controllerFile,
|
||||
$this->render($templatePath.'/controller.php')
|
||||
);
|
||||
|
||||
foreach($this->getActionIDs() as $action)
|
||||
{
|
||||
$this->files[]=new CCodeFile(
|
||||
$this->getViewFile($action),
|
||||
$this->render($templatePath.'/view.php', array('action'=>$action))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function getActionIDs()
|
||||
{
|
||||
$actions=preg_split('/[\s,]+/',$this->actions,-1,PREG_SPLIT_NO_EMPTY);
|
||||
$actions=array_unique($actions);
|
||||
sort($actions);
|
||||
return $actions;
|
||||
}
|
||||
|
||||
public function getControllerClass()
|
||||
{
|
||||
if(($pos=strrpos($this->controller,'/'))!==false)
|
||||
return ucfirst(substr($this->controller,$pos+1)).'Controller';
|
||||
else
|
||||
return ucfirst($this->controller).'Controller';
|
||||
}
|
||||
|
||||
public function getModule()
|
||||
{
|
||||
if(($pos=strpos($this->controller,'/'))!==false)
|
||||
{
|
||||
$id=substr($this->controller,0,$pos);
|
||||
if(($module=Yii::app()->getModule($id))!==null)
|
||||
return $module;
|
||||
}
|
||||
return Yii::app();
|
||||
}
|
||||
|
||||
public function getControllerID()
|
||||
{
|
||||
if($this->getModule()!==Yii::app())
|
||||
$id=substr($this->controller,strpos($this->controller,'/')+1);
|
||||
else
|
||||
$id=$this->controller;
|
||||
if(($pos=strrpos($id,'/'))!==false)
|
||||
$id[$pos+1]=strtolower($id[$pos+1]);
|
||||
else
|
||||
$id[0]=strtolower($id[0]);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public function getUniqueControllerID()
|
||||
{
|
||||
$id=$this->controller;
|
||||
if(($pos=strrpos($id,'/'))!==false)
|
||||
$id[$pos+1]=strtolower($id[$pos+1]);
|
||||
else
|
||||
$id[0]=strtolower($id[0]);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public function getControllerFile()
|
||||
{
|
||||
$module=$this->getModule();
|
||||
$id=$this->getControllerID();
|
||||
if(($pos=strrpos($id,'/'))!==false)
|
||||
$id[$pos+1]=strtoupper($id[$pos+1]);
|
||||
else
|
||||
$id[0]=strtoupper($id[0]);
|
||||
return $module->getControllerPath().'/'.$id.'Controller.php';
|
||||
}
|
||||
|
||||
public function getViewFile($action)
|
||||
{
|
||||
$module=$this->getModule();
|
||||
return $module->getViewPath().'/'.$this->getControllerID().'/'.$action.'.php';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user