0

Guestbook _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>

問題は:

また、ここでロード$form->errorする他の結合モデル ( GuestbookTr )にも を表示する必要がありますlocalized。明らかに、_form.phpこのモデル (Guestbook) に参加しているため、そのモデルには関連付けられていません。

その 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> 

質問はかなり単純な生地です:

`$form->error` が "Undefined variable form" を与えることを知って、この部分ビューにエラーを表示するにはどうすればよいでしょうか?

追加の詳細は次のとおりです。

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'),
...
4

1 に答える 1

0

$ form-> error();を渡すことができます。任意のモデルの$model変数。あなたの場合、最初にアクセス可能にし、名前を明確にする必要があります。

$model=new HsGuestbook;
$modelTr = new HsGuestbookTr;

$form->error($model,'name');
$form->error($modelTr,'name');

$ form変数を作成するには、次のドキュメントで説明されているように、新しいCActiveFormクラスをインスタンス化する必要があります。

http://www.yiiframework.com/doc/api/1.1/CActiveForm

于 2012-09-12T15:46:32.463 に答える