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能完善下这些地方