Browse Source

crud generator WIP

tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
62b4a645f1
  1. 83
      framework/yii/gii/generators/crud/Generator.php
  2. 10
      framework/yii/gii/generators/crud/form.php
  3. 8
      framework/yii/gii/generators/crud/templates/controller.php
  4. 8
      framework/yii/gii/generators/crud/templates/model.php

83
framework/yii/gii/generators/crud/Generator.php

@ -7,6 +7,10 @@
namespace yii\gii\generators\crud; namespace yii\gii\generators\crud;
use yii\db\ActiveRecord;
use yii\gii\CodeFile;
use yii\web\Controller;
/** /**
* *
* @author Qiang Xue <qiang.xue@gmail.com> * @author Qiang Xue <qiang.xue@gmail.com>
@ -14,6 +18,10 @@ namespace yii\gii\generators\crud;
*/ */
class Generator extends \yii\gii\Generator class Generator extends \yii\gii\Generator
{ {
public $modelClass;
public $controllerID;
public $baseControllerClass = 'yii\web\Controller';
public function getName() public function getName()
{ {
return 'CRUD Generator'; return 'CRUD Generator';
@ -25,11 +33,84 @@ class Generator extends \yii\gii\Generator
operations for the specified data model.'; operations for the specified data model.';
} }
public function rules()
{
return array_merge(parent::rules(), array(
array('modelClass, controllerID, baseControllerClass', 'filter', 'filter' => 'trim'),
array('modelClass, controllerID, baseControllerClass', 'required'),
array('modelClass', 'match', 'pattern' => '/^[\w\\\\]*$/', 'message' => 'Only word characters and backslashes are allowed.'),
array('modelClass', 'validateClass', 'params' => array('extends' => ActiveRecord::className())),
array('controllerID', 'match', 'pattern' => '/^[a-z\\-\\/]*$/', 'message' => 'Only a-z, dashes (-) and slashes (/) are allowed.'),
array('baseControllerClass', 'match', 'pattern' => '/^[\w\\\\]*$/', 'message' => 'Only word characters and backslashes are allowed.'),
array('baseControllerClass', 'validateClass', 'params' => array('extends' => Controller::className())),
));
}
public function attributeLabels()
{
return array_merge(parent::attributeLabels(), array(
'modelClass' => 'Model Class',
'controllerID' => 'Controller ID',
'baseControllerClass' => 'Base Controller Class',
));
}
/**
* @inheritdoc
*/
public function hints()
{
return array(
'modelClass' => 'This is the ActiveRecord class associated with the table that CRUD will be built upon.
You should provide a fully qualified class name, e.g., <code>app\models\Post</code>.',
'controllerID' => 'CRUD controllers are often named after the model class name that they are dealing with.
Controller ID should be in lower case and may contain module ID(s) separated by slashes. For example:
<ul>
<li><code>order</code> generates <code>OrderController.php</code></li>
<li><code>order-item</code> generates <code>OrderItemController.php</code></li>
<li><code>admin/user</code> generates <code>UserController.php</code> within the <code>admin</code> module.</li>
</ul>',
'baseControllerClass' => 'This is the class that the new CRUD controller class will extend from.
You should provide a fully qualified class name, e.g., <code>yii\web\Controller</code>.',
);
}
public function requiredTemplates()
{
return array(
'controller.php',
);
}
/**
* @inheritdoc
*/
public function stickyAttributes()
{
return array('baseControllerClass');
}
/** /**
* @inheritdoc * @inheritdoc
*/ */
public function generate() public function generate()
{ {
return array(); $files = array();
$files[] = new CodeFile(
$this->controllerFile,
$this->render('controller.php')
);
$files = scandir($this->getTemplatePath());
foreach ($files as $file) {
if (is_file($templatePath . '/' . $file) && CFileHelper::getExtension($file) === 'php' && $file !== 'controller.php') {
$files[] = new CodeFile(
$this->viewPath . DIRECTORY_SEPARATOR . $file,
$this->render($templatePath . '/' . $file)
);
}
}
return $files;
} }
} }

10
framework/yii/gii/generators/crud/form.php

@ -0,0 +1,10 @@
<?php
/**
* @var yii\base\View $this
* @var yii\widgets\ActiveForm $form
* @var yii\gii\generators\crud\Generator $generator
*/
echo $form->field($generator, 'modelClass');
echo $form->field($generator, 'controllerID');
echo $form->field($generator, 'baseControllerClass');

8
framework/yii/gii/generators/crud/templates/controller.php

@ -0,0 +1,8 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: qiang
* Date: 8/26/13
* Time: 5:22 PM
* To change this template use File | Settings | File Templates.
*/

8
framework/yii/gii/generators/crud/templates/model.php

@ -0,0 +1,8 @@
<?php
/**
* Created by JetBrains PhpStorm.
* User: qiang
* Date: 8/26/13
* Time: 5:22 PM
* To change this template use File | Settings | File Templates.
*/
Loading…
Cancel
Save