私はあなたと同じ問題を抱えていました。
次のファイルにパッチを適用します。
/path/to/yii/framework/web/helpers/CHtml.php
メソッド「resolveName」を見つけて、次のように置き換えます。
/**
* Resolves a class name, removing namespaces.
*/
public static function resolveClassName($model){
return end(explode('\\',get_class($model)));
}
/**
* Generates input name for a model attribute.
* Note, the attribute name may be modified after calling this method if the name
* contains square brackets (mainly used in tabular input) before the real attribute name.
* @param CModel $model the data model
* @param string $attribute the attribute
* @return string the input name
*/
public static function resolveName($model,&$attribute)
{
if(($pos=strpos($attribute,'['))!==false)
{
if($pos!==0) // e.g. name[a][b]
return self::resolveClassName($model).'['.substr($attribute,0,$pos).']'.substr($attribute,$pos);
if(($pos=strrpos($attribute,']'))!==false && $pos!==strlen($attribute)-1) // e.g. [a][b]name
{
$sub=substr($attribute,0,$pos+1);
$attribute=substr($attribute,$pos+1);
return self::resolveClassName($model).$sub.'['.$attribute.']';
}
if(preg_match('/\](\w+\[.*)$/',$attribute,$matches))
{
$name=self::resolveClassName($model).'['.str_replace(']','][',trim(strtr($attribute,array(']['=>']','['=>']')),']')).']';
$attribute=$matches[1];
return $name;
}
}
return self::resolveClassName($model).'['.$attribute.']';
}
お役に立てれば!
PSこれがばかげている、または不要であると考える人にとっては、JavaScriptを使用して(または少なくともjQueryを使用して)バックスラッシュを使用してIDで要素を選択できないため、クライアント側のバリデーターは機能しません