0

我有一个 CJUIDialog,我在其中使用 renderPartial 加载另一个表单的内容。在该表单中有一个 ajax 按钮,它可以加载另一个表单。该表单包含另一个 ajax 按钮,我需要在其中加载对话框本身内的前一个表单。我试过这样做。但它不起作用。在我的控制器中,我有两种方法可以打印出这样的两种表格。

public function actionNewRecipients(){
        $customer = new Customer;
        $address = new Address;
        $content = $this->renderPartial('_form_new',array('customer'=>$customer,'address'=>$address,'guest'=>true),true);

        echo $content;
}
public function actionAddRecipients()
{ $content = $this->renderPartial('_form_inner',array(),true);

    echo $content;}

然后在一种形式中,我有 ajax 按钮,例如,

            echo CHtml::ajaxSubmitButton(Yii::t('New','New Recipient'),CHtml::normalizeUrl(array('customer/newRecipients')),array('success'=>'js: function(data) {
                    alert("new");
                    $("#dialog_gift").html(data);

                    $("#dialog_gift").dialog("option","title","Select Recipient");


                }')); 

在另一种形式中,我有 ajax 按钮,例如,

echo CHtml::ajaxSubmitButton(Yii::t('New','New Recipient'),CHtml::normalizeUrl(array('customer/addRecipients')),array('success'=>'js: function(data) {
                    alert("select");
                    $("#dialog_gift").html(data);

                    $("#dialog_gift").dialog("option","title","Select Recipient");
                    //$("customer-form_inner").attr("action","'.CHtml::normalizeUrl(array('customer/newRecipients')).'")

                }')); 

CJUIDialog 看起来像,

$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'dialog_gift',
// additional javascript options for the dialog plugin
'options'=>array(
    'title'=>$title,
    'autoOpen'=>false,
    'modal'=>true,
    'scrolling'=>'no',
    'resizable'=>false,
    'scrollable'=>false,
    'closeOnEscape' => true,
    ),
));
echo '<div class="span-24">';
echo $content;
echo '</div>';

$this->endWidget('zii.widgets.jui.CJuiDialog');

最初将加载一个表单内容。

第一个过渡正确发生。但是在我替换了 html 内容之后,加载另一个视图的第二次转换不会发生。

请让我知道是否有人可以提供帮助。

谢谢

4

1 回答 1

0

尝试设置renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false)-function 的第四个参数。通过设置$processOutput为 true,将包含并执行所有必要的脚本(包括启用 ajax-button-functionality 的脚本)。

于 2012-06-29T22:25:46.637 回答