| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- $class=get_class($model);
- Yii::app()->clientScript->registerScript('gii.model',"
- $('#{$class}_connectionId').change(function(){
- var tableName=$('#{$class}_tableName');
- tableName.autocomplete('option', 'source', []);
- $.ajax({
- url: '".Yii::app()->getUrlManager()->createUrl('gii/model/getTableNames')."',
- data: {db: this.value},
- dataType: 'json'
- }).done(function(data){
- tableName.autocomplete('option', 'source', data);
- });
- });
- $('#{$class}_modelClass').change(function(){
- $(this).data('changed',$(this).val()!='');
- });
- $('#{$class}_tableName').bind('keyup change', function(){
- var model=$('#{$class}_modelClass');
- var tableName=$(this).val();
- if(tableName.substring(tableName.length-1)!='*') {
- $('.form .row.model-class').show();
- }
- else {
- $('#{$class}_modelClass').val('');
- $('.form .row.model-class').hide();
- }
- if(!model.data('changed')) {
- var i=tableName.lastIndexOf('.');
- if(i>=0)
- tableName=tableName.substring(i+1);
- var tablePrefix=$('#{$class}_tablePrefix').val();
- if(tablePrefix!='' && tableName.indexOf(tablePrefix)==0)
- tableName=tableName.substring(tablePrefix.length);
- var modelClass='';
- $.each(tableName.split('_'), function() {
- if(this.length>0)
- modelClass+=this.substring(0,1).toUpperCase()+this.substring(1);
- });
- model.val(modelClass);
- }
- });
- $('.form .row.model-class').toggle($('#{$class}_tableName').val().substring($('#{$class}_tableName').val().length-1)!='*');
- ");
- ?>
- <h1>Model Generator</h1>
- <p>This generator generates a model class for the specified database table.</p>
- <?php $form=$this->beginWidget('CCodeForm', array('model'=>$model)); ?>
- <div class="row sticky">
- <?php echo $form->labelEx($model, 'connectionId')?>
- <?php echo $form->textField($model, 'connectionId', array('size'=>65))?>
- <div class="tooltip">
- The database component that should be used.
- </div>
- <?php echo $form->error($model,'connectionId'); ?>
- </div>
- <div class="row sticky">
- <?php echo $form->labelEx($model,'tablePrefix'); ?>
- <?php echo $form->textField($model,'tablePrefix', array('size'=>65)); ?>
- <div class="tooltip">
- This refers to the prefix name that is shared by all database tables.
- Setting this property mainly affects how model classes are named based on
- the table names. For example, a table prefix <code>tbl_</code> with a table name <code>tbl_post</code>
- will generate a model class named <code>Post</code>.
- <br/>
- Leave this field empty if your database tables do not use common prefix.
- </div>
- <?php echo $form->error($model,'tablePrefix'); ?>
- </div>
- <div class="row">
- <?php echo $form->labelEx($model,'tableName'); ?>
- <?php $this->widget('zii.widgets.jui.CJuiAutoComplete',array(
- 'model'=>$model,
- 'attribute'=>'tableName',
- 'name'=>'tableName',
- 'source'=>Yii::app()->hasComponent($model->connectionId) ? array_keys(Yii::app()->{$model->connectionId}->schema->getTables()) : array(),
- 'options'=>array(
- 'minLength'=>'0',
- 'focus'=>new CJavaScriptExpression('function(event,ui) {
- $("#'.CHtml::activeId($model,'tableName').'").val(ui.item.label).change();
- return false;
- }')
- ),
- 'htmlOptions'=>array(
- 'id'=>CHtml::activeId($model,'tableName'),
- 'size'=>'65',
- 'data-tooltip'=>'#tableName-tooltip'
- ),
- )); ?>
- <div class="tooltip" id="tableName-tooltip">
- This refers to the table name that a new model class should be generated for
- (e.g. <code>tbl_user</code>). It can contain schema name, if needed (e.g. <code>public.tbl_post</code>).
- You may also enter <code>*</code> (or <code>schemaName.*</code> for a particular DB schema)
- to generate a model class for EVERY table.
- </div>
- <?php echo $form->error($model,'tableName'); ?>
- </div>
- <div class="row model-class">
- <?php echo $form->label($model,'modelClass',array('required'=>true)); ?>
- <?php echo $form->textField($model,'modelClass', array('size'=>65)); ?>
- <div class="tooltip">
- This is the name of the model class to be generated (e.g. <code>Post</code>, <code>Comment</code>).
- It is case-sensitive.
- </div>
- <?php echo $form->error($model,'modelClass'); ?>
- </div>
- <div class="row sticky">
- <?php echo $form->labelEx($model,'baseClass'); ?>
- <?php echo $form->textField($model,'baseClass',array('size'=>65)); ?>
- <div class="tooltip">
- This is the class that the new model class will extend from.
- Please make sure the class exists and can be autoloaded.
- </div>
- <?php echo $form->error($model,'baseClass'); ?>
- </div>
- <div class="row sticky">
- <?php echo $form->labelEx($model,'modelPath'); ?>
- <?php echo $form->textField($model,'modelPath', array('size'=>65)); ?>
- <div class="tooltip">
- This refers to the directory that the new model class file should be generated under.
- It should be specified in the form of a path alias, for example, <code>application.models</code>.
- </div>
- <?php echo $form->error($model,'modelPath'); ?>
- </div>
- <div class="row">
- <?php echo $form->labelEx($model,'buildRelations'); ?>
- <?php echo $form->checkBox($model,'buildRelations'); ?>
- <div class="tooltip">
- Whether relations should be generated for the model class.
- In order to generate relations, full scan of the whole database is needed.
- You should disable this option if your database contains too many tables.
- </div>
- <?php echo $form->error($model,'buildRelations'); ?>
- </div>
- <div class="row">
- <?php echo $form->labelEx($model,'commentsAsLabels'); ?>
- <?php echo $form->checkBox($model,'commentsAsLabels'); ?>
- <div class="tooltip">
- Whether comments specified for the table columns should be used as the new model's attribute labels.
- In case your RDBMS doesn't support feature of commenting columns or column comment wasn't set,
- column name would be used as the attribute name base.
- </div>
- <?php echo $form->error($model,'commentsAsLabels'); ?>
- </div>
- <?php $this->endWidget(); ?>
|