mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-15 22:09:48 +08:00
crud generator WIP
This commit is contained in:
@@ -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
Normal file
10
framework/yii/gii/generators/crud/form.php
Normal file
@@ -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');
|
||||||
@@ -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
Normal file
8
framework/yii/gii/generators/crud/templates/model.php
Normal file
@@ -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.
|
||||||
|
*/
|
||||||
Reference in New Issue
Block a user