首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQRelcopy在renderPartial()中不起作用

JQRelcopy在renderPartial()中不起作用
EN

Stack Overflow用户
提问于 2015-09-07 19:51:59
回答 1查看 53关注 0票数 0

我在我的弹出视图中使用了JQRelcopy扩展。当我使用render()时,扩展可以正常工作,但每次当我打开颜色框时,它都会将旧值发送到控制器。如果我使用renderPartial(),当我打开颜色框时,它每次都会向控制器发送新值,但是extension (JQRelcopy)不会克隆字段。

这就是我在视图中使用扩展的地方:

代码语言:javascript
复制
Yii::import('ext.jqrelcopy.JQRelcopy');

$this->widget('ext.jqrelcopy.JQRelcopy',array(
    'id' => 'copylink',
    'removeText' => '<i class="icon-remove" style="margin-left: 1px;"></i>',
    'removeHtmlOptions' => array('style'=>'color:red; margin-left: 45px'),
    'jsAfterCloneComplete' => 'initializeTimePicker()',
    'jsAfterNewId' => JQRelcopy::afterNewIdDatePicker(Util::getCustomDatePicker($briefingEquipment, 0, $minDate, $maxDate)),

    'options' => array(
        'copyClass' => 'copy',
        'limit' => 10,
        'clearInputs' => true,
        'excludeSelector' => '.skipcopy',
    )
));

这是我的控制器代码:

代码语言:javascript
复制
public function actionShowEquipment()
{
    $this->layout = "//layouts/popup";

    $equipmentConflicts = '';
    $briefingId = $_POST['briefingId'];
    $briefingDate = $_POST['briefingDate'];
    $briefingEndDate = isset($_POST['briefingEndDate']) ? $_POST['briefingEndDate'] : '';
    $serializeBriefingEquipments = isset($_POST['briefingEquipments']) ? $_POST['briefingEquipments'] : '';

    $equipment = CHtml::listData(Equipment::model()->findAll(), 'id', 'name');
    $briefingCenter = BriefingCenter::model()->findByPk(Yii::app()->user->currentBriefingCenterId);

    if ($briefingId) {
     $briefingEquipmentArr = BriefingEquipment::model()->findAll('briefing_id = :bId', array(':bId' => $briefingId));

        if (!$briefingEquipmentArr) {
            $briefingEquipmentArr[] = new BriefingEquipment();
        }
    } else if ($serializeBriefingEquipments) {
        $serializeBriefingEquipments = unserialize($serializeBriefingEquipments);
    }

    $briefing = Briefing::model()->findByPk($briefingId);

    if (!empty($briefing->scheduled_date) && !empty($briefing->scheduled_end_date)) {
        $minDate = $briefing->scheduled_date;
        $maxDate = $briefing->scheduled_end_date;
    } else {
        $minDate = $briefingDate;
        $maxDate = $briefingEndDate;
    }

    echo $this->renderPartial('edit/equipment', array(
        'briefing' => array(
            'briefingId' => $briefingId,
            'briefingDate' => $briefingDate,
            'briefingEndDate' => $briefingEndDate,
        ),
        'minDate' => strtotime($minDate),
        'maxDate' =>  strtotime($maxDate),
        'briefingEquipmentArr' => $briefingEquipmentArr,
        'equipments' => $equipment,
        'briefingCenter' => $briefingCenter,
        'serializeBriefingEquipments' => $serializeBriefingEquipments,
        'dateFormat' => Yii::app()->user->currentBriefingCenterDateFormat,
    ));
}
EN

回答 1

Stack Overflow用户

发布于 2015-09-09 13:50:14

这个问题是由于render和renderPartial的原因,我使用render和扩展可以很好地工作。下面是render和renderPartial的不同之处,这是我从Stackoverflow中得到的。

render ()通常用于呈现与用户在应用程序中看到的“页面”相对应的视图。它首先呈现您指定的视图,然后呈现当前控制器操作的布局(如果适用),将第一次呈现的结果放入布局中。然后执行输出处理(此时意味着自动插入任何必要的标签并更新动态内容),最后输出结果。

renderPartial()通常用于呈现页面的“一块”。render()与render ()的主要区别在于,此方法不会将渲染结果放置在布局中。默认情况下,它也不执行输出处理,但您可以使用$processOutput参数覆盖此行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32438050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档