mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-15 05:45:33 +08:00
crud generator WIP
This commit is contained in:
@@ -7,6 +7,10 @@
|
||||
|
||||
namespace yii\gii\generators\crud;
|
||||
|
||||
use yii\db\ActiveRecord;
|
||||
use yii\gii\CodeFile;
|
||||
use yii\web\Controller;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
@@ -14,6 +18,10 @@ namespace yii\gii\generators\crud;
|
||||
*/
|
||||
class Generator extends \yii\gii\Generator
|
||||
{
|
||||
public $modelClass;
|
||||
public $controllerID;
|
||||
public $baseControllerClass = 'yii\web\Controller';
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'CRUD Generator';
|
||||
@@ -25,11 +33,84 @@ class Generator extends \yii\gii\Generator
|
||||
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
|
||||
*/
|
||||
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