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
3852e0b7
Commit
3852e0b7
authored
Aug 18, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
finished module code generator.
parent
4a02e0b5
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
253 additions
and
22 deletions
+253
-22
Application.php
framework/yii/base/Application.php
+1
-2
gii.js
framework/yii/gii/assets/gii.js
+11
-2
main.css
framework/yii/gii/assets/main.css
+5
-0
controller.php
...rk/yii/gii/generators/controller/templates/controller.php
+2
-1
view.php
framework/yii/gii/generators/controller/templates/view.php
+2
-1
form.php
framework/yii/gii/generators/controller/views/form.php
+4
-5
Generator.php
framework/yii/gii/generators/form/Generator.php
+2
-3
action.php
framework/yii/gii/generators/form/templates/action.php
+3
-1
form.php
framework/yii/gii/generators/form/templates/form.php
+2
-1
form.php
framework/yii/gii/generators/form/views/form.php
+4
-5
Generator.php
framework/yii/gii/generators/module/Generator.php
+135
-1
controller.php
framework/yii/gii/generators/module/templates/controller.php
+21
-0
module.php
framework/yii/gii/generators/module/templates/module.php
+29
-0
view.php
framework/yii/gii/generators/module/templates/view.php
+18
-0
form.php
framework/yii/gii/generators/module/views/form.php
+13
-0
view.php
framework/yii/gii/views/default/view.php
+1
-0
No files found.
framework/yii/base/Application.php
View file @
3852e0b7
...
...
@@ -169,7 +169,7 @@ abstract class Application extends Module
public
function
registerErrorHandlers
()
{
if
(
YII_ENABLE_ERROR_HANDLER
)
{
//
ini_set('display_errors', 0);
ini_set
(
'display_errors'
,
0
);
set_exception_handler
(
array
(
$this
,
'handleException'
));
set_error_handler
(
array
(
$this
,
'handleError'
),
error_reporting
());
if
(
$this
->
memoryReserveSize
>
0
)
{
...
...
@@ -419,7 +419,6 @@ abstract class Application extends Module
// disable error capturing to avoid recursive errors while handling exceptions
restore_error_handler
();
restore_exception_handler
();
try
{
$this
->
logException
(
$exception
);
if
((
$handler
=
$this
->
getErrorHandler
())
!==
null
)
{
...
...
framework/yii/gii/assets/gii.js
View file @
3852e0b7
...
...
@@ -28,7 +28,7 @@ yii.gii = (function ($) {
}
$
(
this
).
before
(
'<div class="sticky-value">'
+
value
+
'</div>'
).
hide
();
});
$
(
'.sticky-value'
).
on
(
'click'
,
function
()
{
$
(
'.sticky-value'
).
on
(
'click'
,
function
()
{
$
(
this
).
hide
();
$
(
this
).
next
().
show
().
get
(
0
).
focus
();
});
...
...
@@ -76,10 +76,19 @@ yii.gii = (function ($) {
initPreviewDiffLinks
();
initConfirmationCheckboxes
();
$
(
'.default-view .form-group input,select,textarea'
).
change
(
function
(){
// hide Generate button if any input is changed
$
(
'.default-view .form-group input,select,textarea'
).
change
(
function
()
{
$
(
'.default-view-results,.default-view-files'
).
hide
();
$
(
'.default-view button[name="generate"]'
).
hide
();
});
$
(
'.module-form #generator-moduleclass'
).
change
(
function
()
{
var
value
=
$
(
this
).
val
().
match
(
/
(\w
+
)\\\w
+$/
);
var
$idInput
=
$
(
'#generator-moduleid'
);
if
(
value
&&
value
[
1
]
&&
$idInput
.
val
()
==
''
)
{
$idInput
.
val
(
value
[
1
]);
}
});
}
};
})(
jQuery
);
framework/yii/gii/assets/main.css
View file @
3852e0b7
...
...
@@ -45,6 +45,7 @@ body {
.default-view
.sticky-value
{
padding
:
6px
12px
;
background
:
lightyellow
;
overflow
:
auto
;
}
.default-view
.modal-dialog
{
...
...
@@ -99,6 +100,10 @@ body {
padding
:
1px
;
}
.default-view-results
.alert
pre
{
background
:
white
;
}
.default-diff
pre
{
padding
:
0
;
margin
:
0
;
...
...
framework/yii/gii/generators/controller/templates/controller.php
View file @
3852e0b7
...
...
@@ -8,8 +8,9 @@ use yii\helpers\Inflector;
* @var yii\base\View $this
* @var yii\gii\generators\controller\Generator $generator
*/
echo
"<?php
\n
"
;
?>
<?php
echo
"<?php
\n
"
;
?>
<?php
if
(
!
empty
(
$generator
->
ns
))
:
?>
namespace
<?php
echo
$generator
->
ns
;
?>
;
...
...
framework/yii/gii/generators/controller/templates/view.php
View file @
3852e0b7
...
...
@@ -6,8 +6,9 @@
* @var yii\gii\generators\controller\Generator $generator
* @var string $action the action ID
*/
echo
"<?php
\n
"
;
?>
<?php
echo
"<?php
\n
"
;
?>
/**
* @var yii\base\View $this
*/
...
...
framework/yii/gii/generators/controller/views/form.php
View file @
3852e0b7
...
...
@@ -4,8 +4,7 @@
* @var yii\widgets\ActiveForm $form
* @var yii\gii\generators\controller\Generator $generator
*/
?>
<?php
echo
$form
->
field
(
$generator
,
'controller'
);
?>
<?php
echo
$form
->
field
(
$generator
,
'actions'
);
?>
<?php
echo
$form
->
field
(
$generator
,
'ns'
);
?>
<?php
echo
$form
->
field
(
$generator
,
'baseClass'
);
?>
echo
$form
->
field
(
$generator
,
'controller'
);
echo
$form
->
field
(
$generator
,
'actions'
);
echo
$form
->
field
(
$generator
,
'ns'
);
echo
$form
->
field
(
$generator
,
'baseClass'
);
framework/yii/gii/generators/form/Generator.php
View file @
3852e0b7
...
...
@@ -12,6 +12,7 @@ use yii\base\Model;
use
yii\gii\CodeFile
;
/**
* This generator will generate an action view file based on the specified model class.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
...
...
@@ -124,9 +125,7 @@ class Generator extends \yii\gii\Generator
return
<<<EOD
<p>The form has been generated successfully.</p>
<p>You may add the following code in an appropriate controller class to invoke the view:</p>
<pre style="background:white">
$code
</pre>
<pre>$code</pre>
EOD;
}
...
...
framework/yii/gii/generators/form/templates/action.php
View file @
3852e0b7
...
...
@@ -8,8 +8,10 @@ use yii\helpers\Inflector;
* @var yii\base\View $this
* @var yii\gii\generators\form\Generator $generator
*/
echo
"<?php
\n
"
;
?>
<?php
echo
"<?php
\n
"
;
?>
public function action
<?php
echo
Inflector
::
id2camel
(
trim
(
basename
(
$generator
->
viewName
),
'_'
));
?>
()
{
$model = new
<?php
echo
$generator
->
modelClass
;
?><?php
echo
empty
(
$generator
->
scenarioName
)
?
''
:
"(array('scenario' => '
{
$generator
->
scenarioName
}
'))"
;
?>
;
...
...
framework/yii/gii/generators/form/templates/form.php
View file @
3852e0b7
...
...
@@ -5,8 +5,9 @@
* @var yii\base\View $this
* @var yii\gii\generators\form\Generator $generator
*/
echo
"<?php
\n
"
;
?>
<?php
echo
"<?php
\n
"
;
?>
use yii\helpers\Html;
use yii\widgets\ActiveForm;
...
...
framework/yii/gii/generators/form/views/form.php
View file @
3852e0b7
...
...
@@ -4,8 +4,7 @@
* @var yii\widgets\ActiveForm $form
* @var yii\gii\generators\form\Generator $generator
*/
?>
<?php
echo
$form
->
field
(
$generator
,
'viewName'
);
?>
<?php
echo
$form
->
field
(
$generator
,
'modelClass'
);
?>
<?php
echo
$form
->
field
(
$generator
,
'scenarioName'
);
?>
<?php
echo
$form
->
field
(
$generator
,
'viewPath'
);
?>
echo
$form
->
field
(
$generator
,
'viewName'
);
echo
$form
->
field
(
$generator
,
'modelClass'
);
echo
$form
->
field
(
$generator
,
'scenarioName'
);
echo
$form
->
field
(
$generator
,
'viewPath'
);
framework/yii/gii/generators/module/Generator.php
View file @
3852e0b7
...
...
@@ -7,18 +7,33 @@
namespace
yii\gii\generators\module
;
use
Yii
;
use
yii\gii\CodeFile
;
use
yii\helpers\Html
;
use
yii\helpers\StringHelper
;
/**
* This generator will generate the skeleton code needed by a module.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class
Generator
extends
\yii\gii\Generator
{
public
$moduleClass
;
public
$moduleID
;
/**
* @inheritdoc
*/
public
function
getName
()
{
return
'Module Generator'
;
}
/**
* @inheritdoc
*/
public
function
getDescription
()
{
return
'This generator helps you to generate the skeleton code needed by a Yii module.'
;
...
...
@@ -27,8 +42,127 @@ class Generator extends \yii\gii\Generator
/**
* @inheritdoc
*/
public
function
rules
()
{
return
array_merge
(
parent
::
rules
(),
array
(
array
(
'moduleID, moduleClass'
,
'filter'
,
'filter'
=>
'trim'
),
array
(
'moduleID, moduleClass'
,
'required'
),
array
(
'moduleID'
,
'match'
,
'pattern'
=>
'/^[\w\\-]+$/'
,
'message'
=>
'Only word characters and dashes are allowed.'
),
array
(
'moduleClass'
,
'match'
,
'pattern'
=>
'/^[\w\\\\]*$/'
,
'message'
=>
'Only word characters and backslashes are allowed.'
),
array
(
'moduleClass'
,
'validateModuleClass'
),
));
}
/**
* @inheritdoc
*/
public
function
attributeLabels
()
{
return
array
(
'moduleID'
=>
'Module ID'
,
'moduleClass'
=>
'Module Class'
,
);
}
/**
* @inheritdoc
*/
public
function
hints
()
{
return
array
(
'moduleID'
=>
'This refers to the ID of the module, e.g., <code>admin</code>.'
,
'moduleClass'
=>
'This is the fully qualified class name of the module, e.g., <code>app\modules\admin\Module</code>.'
,
);
}
/**
* @inheritdoc
*/
public
function
successMessage
()
{
if
(
Yii
::
$app
->
hasModule
(
$this
->
moduleID
))
{
$link
=
Html
::
a
(
'try it now'
,
Yii
::
$app
->
getUrlManager
()
->
createUrl
(
$this
->
moduleID
),
array
(
'target'
=>
'_blank'
));
return
"The module has been generated successfully. You may
$link
."
;
}
$output
=
<<<EOD
<p>The module has been generated successfully.</p>
<p>To access the module, you need to modify the application configuration as follows:</p>
EOD;
$code
=
<<<EOD
<?php
return array(
'modules'=>array(
'{$this->moduleID}' => array(
'class' => '{$this->moduleClass}',
),
),
......
);
EOD;
return
$output
.
'<pre>'
.
highlight_string
(
$code
,
true
)
.
'</pre>'
;
}
/**
* @inheritdoc
*/
public
function
requiredTemplates
()
{
return
array
(
'module.php'
,
'controller.php'
,
'view.php'
,
);
}
/**
* @inheritdoc
*/
public
function
generate
()
{
return
array
();
$files
=
array
();
$modulePath
=
$this
->
getModulePath
();
$templatePath
=
$this
->
getTemplatePath
();
$files
[]
=
new
CodeFile
(
$modulePath
.
'/'
.
StringHelper
::
basename
(
$this
->
moduleClass
)
.
'.php'
,
$this
->
render
(
"
$templatePath
/module.php"
)
);
$files
[]
=
new
CodeFile
(
$modulePath
.
'/controllers/DefaultController.php'
,
$this
->
render
(
"
$templatePath
/controller.php"
)
);
$files
[]
=
new
CodeFile
(
$modulePath
.
'/views/default/index.php'
,
$this
->
render
(
"
$templatePath
/view.php"
)
);
return
$files
;
}
/**
* Validates [[moduleClass]] to make sure it is a fully qualified class name.
*/
public
function
validateModuleClass
()
{
if
(
strpos
(
$this
->
moduleClass
,
'\\'
)
===
false
||
Yii
::
getAlias
(
'@'
.
str_replace
(
'\\'
,
'/'
,
$this
->
moduleClass
))
===
false
)
{
$this
->
addError
(
'moduleClass'
,
'Module class must be properly namespaced.'
);
}
}
/**
* @return boolean the directory that contains the module class
*/
public
function
getModulePath
()
{
return
Yii
::
getAlias
(
'@'
.
str_replace
(
'\\'
,
'/'
,
substr
(
$this
->
moduleClass
,
0
,
strrpos
(
$this
->
moduleClass
,
'\\'
))));
}
/**
* @return string the controller namespace of the module.
*/
public
function
getControllerNamespace
()
{
return
substr
(
$this
->
moduleClass
,
0
,
strrpos
(
$this
->
moduleClass
,
'\\'
))
.
'\controllers'
;
}
}
framework/yii/gii/generators/module/templates/controller.php
0 → 100644
View file @
3852e0b7
<?php
/**
* This is the template for generating a controller class within a module.
*
* @var yii\base\View $this
* @var yii\gii\generators\module\Generator $generator
*/
echo
"<?php
\n
"
;
?>
namespace
<?php
echo
$generator
->
getControllerNamespace
();
?>
;
use yii\web\Controller;
class DefaultController extends Controller
{
public function actionIndex()
{
$this->render('index');
}
}
framework/yii/gii/generators/module/templates/module.php
0 → 100644
View file @
3852e0b7
<?php
/**
* This is the template for generating a module class file.
*
* @var yii\base\View $this
* @var yii\gii\generators\module\Generator $generator
*/
$className
=
$generator
->
moduleClass
;
$pos
=
strrpos
(
$className
,
'\\'
);
$ns
=
ltrim
(
substr
(
$className
,
0
,
$pos
),
'\\'
);
$className
=
substr
(
$className
,
$pos
+
1
);
echo
"<?php
\n
"
;
?>
namespace
<?php
echo
$ns
;
?>
class
<?php
echo
$className
;
?>
extends \yii\web\Module
{
public $controllerNamespace = '
<?php
echo
$generator
->
getControllerNamespace
();
?>
';
public function init()
{
parent::init();
// custom initialization code goes here
}
}
framework/yii/gii/generators/module/templates/view.php
0 → 100644
View file @
3852e0b7
<?php
/**
* @var yii\base\View $this
* @var yii\gii\generators\module\Generator $generator
*/
?>
<div
class=
"
<?php
echo
$generator
->
moduleID
.
'-default-index'
;
?>
"
>
<h1>
<?php
echo
"<?php"
;
?>
echo $this->context->action->uniqueId; ?>
</h1>
<p>
This is the view content for action "
<?php
echo
"<?php"
;
?>
echo $this->context->action->id; ?>".
The action belongs to the controller "
<?php
echo
"<?php"
;
?>
echo get_class($this->context); ?>"
in the "
<?php
echo
"<?php"
;
?>
echo $this->context->module->id; ?>" module.
</p>
<p>
You may customize this page by editing the following file:
<br>
<code>
<?php
echo
"<?php"
;
?>
echo __FILE__; ?>
</code>
</p>
</div>
framework/yii/gii/generators/module/views/form.php
0 → 100644
View file @
3852e0b7
<?php
/**
* @var yii\base\View $this
* @var yii\widgets\ActiveForm $form
* @var yii\gii\generators\module\Generator $generator
*/
?>
<div
class=
"module-form"
>
<?php
echo
$form
->
field
(
$generator
,
'moduleClass'
);
echo
$form
->
field
(
$generator
,
'moduleID'
);
?>
</div>
framework/yii/gii/views/default/view.php
View file @
3852e0b7
...
...
@@ -9,6 +9,7 @@ use yii\gii\CodeFile;
/**
* @var yii\base\View $this
* @var yii\gii\Generator $generator
* @var string $id
* @var yii\widgets\ActiveForm $form
* @var string $results
* @var boolean $hasError
...
...
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