在留言簿_form 视图中,我们有:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'hs-guestbook-form',
'enableAjaxValidation'=>false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
));
?>
<script type="text/javascript">
$(document).ready(function()
{
if($('#localized fieldset').length==1)
{
$.ajax({
success: function(html){
$('#localized').append(html);
$('#localized fieldset:last-child').toggle()
},
type: 'get',
url: '<?php echo $this->createUrl('localized'); ?>',
data:
{
index: 1
},
cache: false,
dataType: 'html'
});
}
else {
$('#localized fieldset:last-child').toggle();
}
});
</script>
... and later down this view...
<div id="localized">
<?php for($i=0; $i<count($local);$i++): ?>
<?php if(isset($local[$i]))
$this->renderPartial('_localized',array('model'=>$local[$i],'index'=>$i));
?>
<?php endfor;?>
</div>
问题是:
我们还需要在其他加入的模型( GuestbookTr )上显示$form->error
,我在此处加载localized
。显然,我们没有_form.php
与该模型相关联,因为它正在加入此模型(留言簿)。
这是加载在Guestbook _form上的部分视图:
<fieldset>
<label><?php echo $model->getAttributeLabel('title'); ?></label>
<?php echo CHtml::activeTextField($model, "[$index]title"); ?>
<label><?php echo $model->getAttributeLabel('description'); ?></label>
<?php echo CHtml::activeTextArea($model, "[$index]description"); ?>
</fieldset>
问题是相当简单的面团:
以下是其他详细信息:
在我们的 GuestbookController 上,我们调用这样的新模型:
public function getExtraModelGuestTr()
{
$model = new HsGuestbookTr;
if (isset($_POST['HsGuestbookTr']))
{
$model->attributes = $_POST['HsGuestbookTr'];
}
return $model;
}
然后,在创建上,我们就像这样使用它:
public function actionCreate()
{
$this->layout = 'admin';
$model=new HsGuestbook;
$localized[] = $this->getExtraModelGuestTr();
if(isset($_POST['HsGuestbook']))
{
if (($_POST['HsGuestbook']['status']) === '0') {
$model->setScenario('Insert');
} else {
$model->setScenario('Publish');
}
...
在留言板型号上,我们有:
public function rules()
{
return array(
array('name, category', 'required', 'on'=>'Insert'),
array('name, category, image', 'required', 'on'=>'Publish'),
...
答案 0 :(得分:0)
你可以用$ form-&gt; error();任何模型的$ model变量。 在你的情况下,你必须首先使它可访问,并使他们的名字明确无视。
$model=new HsGuestbook;
$modelTr = new HsGuestbookTr;
$form->error($model,'name');
$form->error($modelTr,'name');
要创建$ form变量,您需要实例化一个新的CActiveForm类,如下面的文档中所述: