【问题标题】:Yii update from modal windowYii 从模态窗口更新
【发布时间】:2014-03-12 11:39:26
【问题描述】:

我需要更新一个模态窗口并在我单击编辑按钮时显示它。

控制器:

public function actionUpdateAjax($id)
    {
        $contratos = ZfContratos::model()->findByPk($id);

        $this->renderPartial('//ZfContratos/_form_update', array('model'=>$contratos), false, true);
    }

索引:

<?php $this->beginWidget(
    'bootstrap.widgets.TbModal',
    array('id' => 'actualizar_contrato')
); ?>
    <div class="modal-header">
        <a class="close" data-dismiss="modal">&times;</a>
        <h4>Actualizar contrato</h4>
    </div>
    <div class="modal-body">

        <?php $this->renderPartial('//ZfContratos/_form_update', array('model'=>$contrato));?>

    </div>
    <div class="modal-footer">

        <?php $this->widget(
            'bootstrap.widgets.TbButton',
            array(
                'label' => 'CANCELAR',
                'url' => '#',
                'htmlOptions' => array('data-dismiss' => 'modal'),
            )
        ); ?>
    </div>
<?php $this->endWidget(); ?>

并查看_contratos

此刻我有这个:

<?php echo CHtml::link('EDITAR', array('//ZfInmuebles/UpdateAjax', 'id'=>$data->zf_contrato_id), array('class'=>'btn', 'id'=>'vermas')); ?>

但我需要它是一个 ajaxbutton 或 ajaxlink,刷新 div“actualizar_contrato”并显示它。

【问题讨论】:

  • 是的,这是可能的,您只需在您的模式中添加一个保存/提交按钮,在此按钮上进行 ajax 发布调用以在后台提交表单,成功后您可以切换关闭表单自动。
  • 此时点击进入新页面,字段中包含模型的实际值,通过ajax调用,可以保留吗?
  • hmmm.. 我看不出有什么问题,我想这个页面就像一个典型的“查看”页面?但是,如果您想减少该页面,只需渲染包含所述信息的另一个视图,您可以在保存时使用该内容更新模态正文,或显示不同的模态等
  • 你能举个例子吗?
  • 我在答案中做了一个例子.. 修改你的 CHtml::link 到 ajaxLink,并相应地更新你的控制器

标签: php jquery yii yii-booster


【解决方案1】:

这只是一个参考实现,让您了解如何执行此操作,请根据您的要求进行修改

// your view
// Button to trigger modal
 <?php echo CHtml::ajaxLink('EDITAR',array('//ZfInmuebles/UpdateAjax', 'id'=>$data-> zf_contrato_id), array(
          'type'=>'POST',
          "success"=>'js:function(html){
              $("#actualizar_contrato >.modal-body").html(html);
              $("#actualizar_contrato").modal("show");
                }
          '));?
.....
  // modal
    <?php $this->beginWidget(
        'bootstrap.widgets.TbModal',
        array('id' => 'actualizar_contrato')
    ); ?>
        <div class="modal-header">
            <a class="close" data-dismiss="modal">&times;</a>
            <h4>Actualizar contrato</h4>
        </div>
        <div class="modal-body">
        <?php 
            $contrato = new ZfContratos; 
            $this->renderPartial('//ZfContratos/_form_update', array('model'=>$contrato));
        ?>
        </div>
        <div class="modal-footer">
            <?php echo CHtml::ajaxLink('Save',  // Link Text
            array('//ZfContratos/update', 'id'=>$data->zf_contrato_id), //url
            array(// ajaxOptions
                'data'=> 'js:$("#id_of_the_form").serialize()' ,
                'type'=>'POST',
                'success'=>'js:function(html){$("#actualizar_contrato >.modal-body").html(html) }'
                )
            ) 
            );?>
            <?php $this->widget(
                'bootstrap.widgets.TbButton',
                array(
                    'label' => 'CANCELAR',
                    'url' => '#',
                    'htmlOptions' => array('data-dismiss' => 'modal'),
                )
            ); ?>
        </div>
    <?php $this->endWidget(); ?>
    .....

现在在你的控制器中修改如下

    //ZfContratos Controller
    public function actionUpdate(){
        // Your regular logic for saving 
        if(Yii::app()->request->isAjaxRequest){
            if($model->save()){

                $this->renderPartial("_mvsavedView",array('model'=>$model)) //OR echo "Saved Successfully"; 
            } else {
                print_r($model->getErrors());
            }
            Yii::app()->end();  
        }
    }

【讨论】:

  • 当我点击“EDITAR”时没有任何反应,它不会打开带有表单的模态窗口
  • 我使用编辑器按钮来保存表单。没有触发模态,我现在已经相应地调整了答案
  • 问题是我需要加载具有给定 id contrato 的表单,但我无法更新我给模型的 id:ZfContratos::model()->findByPk($contrato_id) ; $this->renderPartial('//ZfContratos/_form_update', array('model'=>$contrato));
  • 请看编辑,我想我把你弄糊涂了,我想加载一个表单,表单的“SAVE”按钮工作正常,问题是当他点击“时刷新div“actualizar_contrato”视图 _contratos 的 EDITAR"
  • 不行,点击时模态框不显示
猜你喜欢
  • 2020-01-30
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2023-03-05
  • 2015-07-17
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
相关资源
最近更新 更多