gii中部分js改善建议

gii中的model和crud的views文件中的js代码都用了固定的ID值,不便于扩展,比如gii\generators\model\views\index.php中的“$(’#ModelCode_modelClass’)”、“$(’#ModelCode_tableName’)”等

如果我的myModelCode是继承自ModelCode的那么生成的字段ID都是myModelCode这就导致这些js都失效了。如果将这些地方改成".get_class($model)."那么就能根据$model的名称来变换ID号了!

没改前的代码


<?php

Yii::app()->clientScript->registerScript('gii.model',"

$('#ModelCode_modelClass').change(function(){

	$(this).data('changed',$(this).val()!='');

});

$('#ModelCode_tableName').bind('keyup change', function(){

	var model=$('#ModelCode_modelClass');

	var tableName=$(this).val();

	if(tableName.substring(tableName.length-1)!='*') {

		$('.form .row.model-class').show();

	}

	else {

		$('#ModelCode_modelClass').val('');

		$('.form .row.model-class').hide();

......

修改后的代码


Yii::app()->clientScript->registerScript('gii.model',"

$('#".get_class($model)."_modelClass').change(function(){

	$(this).data('changed',$(this).val()!='');

});

$('#".get_class($model)."_tableName').bind('keyup change', function(){

	var model=$('#".get_class($model)."_modelClass');

	var tableName=$(this).val();

	if(tableName.substring(tableName.length-1)!='*') {

		$('.form .row.model-class').show();

	}

	else {

		$('#".get_class($model)."_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=$('#".get_class($model)."_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($('#".get_class($model)."_tableName').val().substring($('#".get_class($model)."_tableName').val().length-1)!='*');

");

crud中的同理,希望qiang能完善下这些地方

你能提交一个ticket么?谢谢。

已提交

issues:1371