Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
e683bd3d
Commit
e683bd3d
authored
Sep 08, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CRUD WIP
parent
4edd8425
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
174 additions
and
84 deletions
+174
-84
Generator.php
framework/yii/gii/generators/crud/Generator.php
+52
-1
controller.php
framework/yii/gii/generators/crud/templates/controller.php
+19
-17
_form.php
framework/yii/gii/generators/crud/templates/views/_form.php
+34
-39
index.php
framework/yii/gii/generators/crud/templates/views/index.php
+45
-20
update.php
framework/yii/gii/generators/crud/templates/views/update.php
+4
-4
view.php
framework/yii/gii/generators/crud/templates/views/view.php
+20
-3
No files found.
framework/yii/gii/generators/crud/Generator.php
View file @
e683bd3d
...
...
@@ -151,7 +151,7 @@ class Generator extends \yii\gii\Generator
$templatePath
=
$this
->
getTemplatePath
()
.
'/views'
;
foreach
(
scandir
(
$templatePath
)
as
$file
)
{
if
(
!
in_array
(
$file
,
array
(
'
create.php'
,
'update.php'
,
'view
.php'
)))
{
if
(
!
in_array
(
$file
,
array
(
'
index.php'
,
'create.php'
,
'update.php'
,
'view.php'
,
'_form
.php'
)))
{
continue
;
}
if
(
is_file
(
$templatePath
.
'/'
.
$file
)
&&
pathinfo
(
$file
,
PATHINFO_EXTENSION
)
===
'php'
)
{
...
...
@@ -205,4 +205,55 @@ class Generator extends \yii\gii\Generator
$pk
=
$class
::
primaryKey
();
return
$pk
[
0
];
}
/**
* @param ActiveRecord $model
* @param string $attribute
* @return string
*/
public
function
generateActiveField
(
$model
,
$attribute
)
{
$tableSchema
=
$model
->
getTableSchema
();
if
(
!
isset
(
$tableSchema
->
columns
[
$attribute
]))
{
return
"
\$
form->field(
\$
model, '
$attribute
');"
;
}
$column
=
$tableSchema
->
columns
[
$attribute
];
if
(
$column
->
phpType
===
'boolean'
)
{
return
"
\$
form->field(
\$
model, '
$attribute
')->checkbox();"
;
}
elseif
(
$column
->
type
===
'text'
)
{
return
"
\$
form->field(
\$
model, '
$attribute
')->textarea(array('rows' => 6));"
;
}
else
{
if
(
preg_match
(
'/^(password|pass|passwd|passcode)$/i'
,
$column
->
name
))
{
$input
=
'passwordInput'
;
}
else
{
$input
=
'textInput'
;
}
if
(
$column
->
phpType
!==
'string'
||
$column
->
size
===
null
)
{
return
"
\$
form->field(
\$
model, '
$attribute
')->
$input
();"
;
}
else
{
return
"
\$
form->field(
\$
model, '
$attribute
')->
$input
(array('maxlength' =>
$column->size
));"
;
}
}
}
/**
* @param \yii\db\ColumnSchema $column
* @return string
*/
public
function
generateColumnFormat
(
$column
)
{
if
(
$column
->
phpType
===
'boolean'
)
{
return
'boolean'
;
}
elseif
(
$column
->
type
===
'text'
)
{
return
'ntext'
;
}
elseif
(
stripos
(
$column
->
name
,
'time'
)
!==
false
&&
$column
->
phpType
===
'integer'
)
{
return
'datetime'
;
}
elseif
(
stripos
(
$column
->
name
,
'email'
)
!==
false
)
{
return
'email'
;
}
elseif
(
stripos
(
$column
->
name
,
'url'
)
!==
false
)
{
return
'url'
;
}
else
{
return
'text'
;
}
}
}
framework/yii/gii/generators/crud/templates/controller.php
View file @
e683bd3d
...
...
@@ -51,6 +51,20 @@ use yii\web\HttpException;
class
<?php
echo
$controllerClass
;
?>
extends
<?php
echo
StringHelper
::
basename
(
$generator
->
baseControllerClass
)
.
"
\n
"
;
?>
{
/**
* Lists all
<?php
echo
$modelClass
;
?>
models.
* @return mixed
*/
public function actionIndex()
{
$dataProvider = new ActiveDataProvider(array(
'query' =>
<?php
echo
$modelClass
;
?>
::find(),
));
return $this->render('index', array(
'dataProvider' => $dataProvider,
));
}
/**
* Displays a single
<?php
echo
$modelClass
;
?>
model.
*
<?php
echo
$paramComments
.
"
\n
"
;
?>
* @return mixed
...
...
@@ -112,20 +126,8 @@ class <?php echo $controllerClass; ?> extends <?php echo StringHelper::basename(
}
/**
* Lists all models.
* @return mixed
*/
public function actionIndex()
{
$dataProvider = new ActiveDataProvider('
<?php
echo
$modelClass
;
?>
');
return $this->render('index', array(
'dataProvider' => $dataProvider,
));
}
/**
* Returns the data model based on its primary key value.
* If the data model is not found, a 404 HTTP exception will be thrown.
* Finds the
<?php
echo
$modelClass
;
?>
model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
*
<?php
echo
$paramComments
.
"
\n
"
;
?>
* @return
<?php
echo
$modelClass
;
?>
the loaded model
* @throws HttpException if the model cannot be found
...
...
@@ -143,10 +145,10 @@ if (count($pks) === 1) {
$condition
=
'array('
.
implode
(
', '
,
$condition
)
.
')'
;
}
?>
$model =
<?php
echo
$modelClass
;
?>
::find(
<?php
echo
$condition
;
?>
);
if ($model === null) {
if (($model =
<?php
echo
$modelClass
;
?>
::find(
<?php
echo
$condition
;
?>
)) !== null) {
return $model;
} else {
throw new HttpException(404, 'The requested page does not exist.');
}
return $model;
}
}
framework/yii/gii/generators/crud/templates/views/_form.php
View file @
e683bd3d
<?php
use
yii\helpers\Inflector
;
use
yii\helpers\StringHelper
;
/**
*
The following variables are available in this template:
*
- $this: the CrudCode object
*
@var yii\base\View $this
*
@var yii\gii\generators\crud\Generator $generator
*/
?>
<?php
echo
"<?php
\n
"
;
?>
/* @var $this
<?php
echo
$this
->
getControllerClass
();
?>
*/
/* @var $model
<?php
echo
$this
->
getModelClass
();
?>
*/
/* @var $form CActiveForm */
?>
<div
class=
"form"
>
<?php
echo
"<?php
\$
form=
\$
this->beginWidget('CActiveForm', array(
'id'=>'"
.
$this
->
class2id
(
$this
->
modelClass
)
.
"-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
)); ?>
\n
"
;
?>
/** @var \yii\db\ActiveRecord $model */
$class
=
$generator
->
modelClass
;
$model
=
new
$class
;
$safeAttributes
=
$model
->
safeAttributes
();
if
(
empty
(
$safeAttributes
))
{
$safeAttributes
=
$model
->
getTableSchema
()
->
columnNames
;
}
<p
class=
"note"
>
Fields with
<span
class=
"required"
>
*
</span>
are required.
</p>
echo
"<?php
\n
"
;
?>
<?php
echo
"<?php echo
\$
form->errorSummary(
\$
model); ?>
\n
"
;
?>
use yii\helpers\Html;
use yii\widgets\ActiveForm;
<?php
foreach
(
$this
->
tableSchema
->
columns
as
$column
)
{
if
(
$column
->
autoIncrement
)
continue
;
/**
* @var yii\base\View $this
* @var
<?php
echo
ltrim
(
$generator
->
modelClass
,
'\\'
);
?>
$model
* @var yii\widgets\ActiveForm $form
*/
?>
<div
class=
"row"
>
<?php
echo
"<?php echo "
.
$this
->
generateActiveLabel
(
$this
->
modelClass
,
$column
)
.
"; ?>
\n
"
;
?>
<?php
echo
"<?php echo "
.
$this
->
generateActiveField
(
$this
->
modelClass
,
$column
)
.
"; ?>
\n
"
;
?>
<?php
echo
"<?php echo
\$
form->error(
\$
model,'
{
$column
->
name
}
'); ?>
\n
"
;
?>
</div>
<?php
}
?>
<div
class=
"row buttons"
>
<?php
echo
"<?php echo CHtml::submitButton(
\$
model->isNewRecord ? 'Create' : 'Save'); ?>
\n
"
;
?>
</div>
<div
class=
"
<?php
echo
Inflector
::
camel2id
(
StringHelper
::
basename
(
$generator
->
modelClass
));
?>
-form"
>
<?php
echo
'<?php'
;
?>
$form = ActiveForm::begin(); ?>
<?php
foreach
(
$safeAttributes
as
$attribute
)
{
echo
"
\t\t
<?php echo "
.
$generator
->
generateActiveField
(
$model
,
$attribute
)
.
" ?>
\n\n
"
;
}
?>
<div
class=
"form-group"
>
<?php
echo
'<?php'
;
?>
echo Html::submitButton($model->isNewRecord ? 'Create' : 'Update', array('class' => 'btn btn-primary')); ?>
</div>
<?php
echo
"<?php
\$
this->endWidget(); ?>
\n
"
;
?>
<?php
echo
'<?php'
;
?>
ActiveForm::end()
; ?>
</div>
<!-- form -->
\ No newline at end of file
</div>
framework/yii/gii/generators/crud/templates/views/index.php
View file @
e683bd3d
<?php
use
yii\helpers\Inflector
;
use
yii\helpers\StringHelper
;
/**
*
The following variables are available in this template:
*
- $this: the CrudCode object
*
@var yii\base\View $this
*
@var yii\gii\generators\crud\Generator $generator
*/
?>
<?php
echo
"<?php
\n
"
;
?>
/* @var $this
<?php
echo
$this
->
getControllerClass
();
?>
*/
/* @var $dataProvider CActiveDataProvider */
<?php
$label
=
$this
->
pluralize
(
$this
->
class2name
(
$this
->
modelClass
));
echo
"
\$
this->breadcrumbs=array(
'
$label
',
);
\n
"
;
/** @var \yii\db\ActiveRecord $model */
$class
=
$generator
->
modelClass
;
$pks
=
$class
::
primaryKey
();
if
(
count
(
$pks
)
===
1
)
{
$viewUrl
=
"array('view', 'id' =>
\$
model->
{
$pks
[
0
]
}
)"
;
}
else
{
$params
=
array
();
foreach
(
$pks
as
$pk
)
{
$params
[]
=
"'
$pk
' =>
\$
model->
$pk
"
;
}
$viewUrl
=
"array('view', "
.
implode
(
', '
,
$params
)
.
')'
;
}
$nameAttribute
=
$generator
->
getNameAttribute
();
echo
"<?php
\n
"
;
?>
$this->menu=array(
array('label'=>'Create
<?php
echo
$this
->
modelClass
;
?>
', 'url'=>array('create')),
array('label'=>'Manage
<?php
echo
$this
->
modelClass
;
?>
', 'url'=>array('admin')),
);
use yii\helpers\Html;
use
<?php
echo
$generator
->
indexWidgetType
===
'grid'
?
'yii\grid\GridView'
:
'yii\widgets\ListView'
;
?>
;
/**
* @var yii\base\View $this
* @var yii\data\ActiveDataProvider $dataProvider
*/
$this->title = '
<?php
echo
Inflector
::
pluralize
(
Inflector
::
camel2words
(
StringHelper
::
basename
(
$generator
->
modelClass
)));
?>
';
?>
<div
class=
"
<?php
echo
Inflector
::
camel2id
(
StringHelper
::
basename
(
$generator
->
modelClass
));
?>
-index"
>
<h1>
<?php
echo
"<?php"
;
?>
echo Html::encode($this->title); ?>
</h1>
<?php
if
(
$generator
->
indexWidgetType
===
'grid'
)
:
?>
<h1>
<?php
echo
$label
;
?>
</h1>
<?php
else
:
?>
<?php
echo
"
\t
<?php"
;
?>
echo ListView::widget(array(
'dataProvider' => $dataProvider,
'itemView' => function ($model, $key, $index, $widget) {
return Html::a(Html::encode($model->
<?php
echo
$nameAttribute
;
?>
),
<?php
echo
$viewUrl
;
?>
);
},
)); ?>
<?php
endif
;
?>
<?php
echo
"<?php"
;
?>
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
</div>
framework/yii/gii/generators/crud/templates/views/update.php
View file @
e683bd3d
...
...
@@ -14,11 +14,11 @@ echo "<?php\n";
use yii\helpers\Html;
/**
* @var yii\base\View $this
* @var
<?php
echo
ltrim
(
$generator
->
modelClass
,
'\\'
);
?>
$model
*/
* @var yii\base\View $this
* @var
<?php
echo
ltrim
(
$generator
->
modelClass
,
'\\'
);
?>
$model
*/
$this->title = '
Modify
<?php
echo
Inflector
::
camel2words
(
StringHelper
::
basename
(
$generator
->
modelClass
));
?>
: ' . $model->
<?php
echo
$generator
->
getNameAttribute
();
?>
;
$this->title = '
Update
<?php
echo
Inflector
::
camel2words
(
StringHelper
::
basename
(
$generator
->
modelClass
));
?>
: ' . $model->
<?php
echo
$generator
->
getNameAttribute
();
?>
;
?>
<div
class=
"
<?php
echo
Inflector
::
camel2id
(
StringHelper
::
basename
(
$generator
->
modelClass
));
?>
-update"
>
...
...
framework/yii/gii/generators/crud/templates/views/view.php
View file @
e683bd3d
...
...
@@ -8,15 +8,20 @@ use yii\helpers\StringHelper;
* @var yii\gii\generators\crud\Generator $generator
*/
/** @var \yii\db\ActiveRecord $model */
$class
=
$generator
->
modelClass
;
$model
=
new
$class
;
echo
"<?php
\n
"
;
?>
use yii\helpers\Html;
use yii\widgets\DetailView;
/**
* @var yii\base\View $this
* @var
<?php
echo
ltrim
(
$generator
->
modelClass
,
'\\'
);
?>
$model
*/
* @var yii\base\View $this
* @var
<?php
echo
ltrim
(
$generator
->
modelClass
,
'\\'
);
?>
$model
*/
$this->title = $model->
<?php
echo
$generator
->
getNameAttribute
();
?>
;
?>
...
...
@@ -24,4 +29,16 @@ $this->title = $model-><?php echo $generator->getNameAttribute(); ?>;
<h1>
<?php
echo
"<?php"
;
?>
echo Html::encode($this->title); ?>
</h1>
<?php
echo
'<?php'
;
?>
echo DetailView::widget(array(
'model' => $model,
'attributes' => array(
<?php
foreach
(
$model
->
getTableSchema
()
->
columns
as
$column
)
{
$format
=
$generator
->
generateColumnFormat
(
$column
);
echo
"
\t\t\t
'"
.
$column
->
name
.
(
$format
===
'text'
?
''
:
':'
.
$format
)
.
"',
\n
"
;
}
?>
),
)); ?>
</div>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment