0

我有一个变量,我想更新控制器中的值并根据该值呈现页面的一部分。

这在第一次时效果很好,但变量没有得到值,保持第一次。这是我的代码:

模型:

public function actionCreate()
{
    $model=new CadTeste;
    $teste=1;

    if(isset($_POST['CadTeste']))
    {
        $model->attributes=$_POST['CadTeste'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->icd_teste));
    }

    $this->render('create',array(
        'model'=>$model,
        'teste'=>$teste,
    ));
}

形式:

    <div id="data">
   <?php $this->renderPartial('_ajaxContent', array('teste'=>$teste)); ?>
</div>

<?php
echo CHtml::ajaxSubmitButton('Alterar Num',CController::createUrl('CadTeste/UpdateAjax'),
array('type'=>'POST',                               
      'data' => array('teste'=> $teste),
      'update' => '#data'          
          )
         ); ?>

控制器

public function actionUpdateAjax()
{
    $teste = $_POST['teste'];
    $teste += 10;
    $this->renderPartial('_ajaxContent', array('teste'=>$teste), false, true);
}

和 _ajaxContent

<?php echo $teste; ?>

每次单击按钮时,我都会得到值“11”而不是“11、21、31、41”。

我怎样才能做到这一点?我应该每次在控制器中更改值吗?

4

2 回答 2

2

尝试使用会话。这对我有用

查看文件

<?php Yii::app()->session['teste']=$teste ?>
<div id='data'>
 <?php $this->renderPartial('_ajaxContent', array('teste'=>$teste)); ?>
</div>
<?php
echo CHtml::ajaxSubmitButton('Alterar Num',$this->createUrl('CadTeste/UpdateAjax'),
array('type'=>'POST',                               
     // 'data' => array('teste'=> $teste),
      'update' => '#data'          
          )
 ); ?>

你的控制器

public function actionUpdateAjax()
    {
        $teste = Yii::app()->session['teste'];
        $teste += 10;
        $this->renderPartial('_ajaxContent', array('teste'=>$teste));
        unset(Yii::app()->session['teste']);
        Yii::app()->session['teste']=$teste;

    }

和你的模型一样

public function actionCreate()
{
    $model=new CadTeste;
    $teste=1;

    if(isset($_POST['CadTeste']))
    {
        $model->attributes=$_POST['CadTeste'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->icd_teste));
    }

    $this->render('create',array(
        'model'=>$model,
        'teste'=>$teste,
    ));
}

不确定这是否是您的问题,但 renderPartial() 不能很好地与 AJAX 配合使用。这是一个已知的 Yii 问题:

http://www.yiiframework.com/forum/index.php/topic/24699-yii-20-ajaxrenderpartial-conflict/

于 2013-05-24T04:57:33.423 回答
0

尝试将其用于视图:

<?php
echo CHtml::ajaxSubmitButton('Alterar Num',CController::createUrl('CadTeste/UpdateAjax',array('teste'=>$teste)),
array('type'=>'POST',                               
      'update' => '#data'          
      )
); ?>

这对于控制器:

public function actionUpdateAjax($teste)
{
    $teste += 10;
    $this->renderPartial('_ajaxContent', array('teste'=>$teste));
}

这样你就可以发布到 action/ajaxupdate/teste/1

它被称为Parameter Binding,$teste 中的参数是从 url 自动填充的,如果它不存在,它会给你一个错误。(您可以设置默认值 $teste=1 使其成为可选)

于 2013-05-23T20:38:53.173 回答