Skip to main content
 首页 » 编程设计

jquery之Yii 就地增删改查文本小部件

2026年10月07日3pander-it

我正在使用 Yii 框架为自己构建一个穷人的项目跟踪系统。目标是拥有一个类似于 basecamp's 的“crud”小部件/表单。注释小部件用于显示带有标题和内容字段的注释。 (我不再使用 basecamp 因此无法发布他们的笔记小部件的图像:-( )

使用 Yii,我有一个客户端模型,我想在 div 中显示与该客户端对应的所有注释,并在同一个 webroot/client/view/client_id 中为这些注释提供 CRUD 功能。页。

我在网上找到的最接近的实现是纯粹用 jquery 完成的,jeditable ,但缺乏创建和删除功能。此外,它没有 Yii 模型 (CActiveRecord) 支持,这意味着需要在 Controller 代码中硬连线来回传输的数据,而不利用 Yii 的 MVC 设置。

我现在拥有的是:通过AJAX(forcCreation)和笔记的Zii CListView小部件(用于检索)提交的隐藏表单,它利用内置的zii小部件更新功能$.fn.yiiListView.update('clistview_id'); ,但我更倾向于使用 Yii/Zii 小部件、jquery 或它们的组合来进行游戏的 U 和 D 部分。

我的 client/view.php 片段:

<div class="note_create"> 
    <?php echo CHtml::button('Add new note',array('class'=>'create-note-button')) ?> 
    <div class="create-note-form" style="display: none;"> 
    <!-- _createNote is just a CActiveForm with a CHtml::ajaxSubmitButton--> 
    <?php $this->renderPartial('_createNote', array('client' => $model, 'note' => $note)); ?> 
    </div> 
</div> 
<div class="note_browser"> 
    <?php $this->widget('zii.widgets.CListView', array( 
        'id' => 'clist_note_browser', 
        'dataProvider' => $model->noteSearch(), 
        'itemView' => '_note', // refers to the partial view named '_note' 
        'emptyText' => 'No notes found.', 
        'sortableAttributes' => array( 
            'note.title', 
            'note.last_modify' 
        ), 
        )); 
    ?> 
</div> 

一个非常简单的笔记模型:

<?php 
 
/** 
 * This is the model class for table "note". 
 * 
 * The followings are the available columns in table 'note': 
 * @property string $nid 
 * @property string $title 
 * @property string $content 
 * @property string $first_create 
 * @property string $last_modify 
 * 
 * The followings are the available model relations: 
 * @property ClientNote $client  ClientNote an intermediate table with two columns: nid, cid 
 */ 
class Note extends CActiveRecord 
{ 
    ... 
    public function relations() 
    {    
        return array('client' => array(self::HAS_ONE, 'ClientNote', 'nid'),); 
    } 
    ... 
} 

有人有什么建议吗?

请您参考如下方法:

首先请查看此内容,它可以帮助您了解自己想要什么:

http://help.discretelogix.com/php/yii/enable-in-place-editing-in-yii-grid.htm

理解后,您需要创建自己的小部件来执行此操作

您可以查看现有的扩展程序,尝试执行您想要的操作: http://www.yiiframework.com/extension/editablegridview/

http://yiitutorials.net/easy/creating-a-widget-with-the-yii-framework

http://www.yiiframework.com/extension/escrollablegridview/

您需要研究所有这些,并了解它们是如何工作的,因此您应该能够采用并扩展以满足您的需求。祝你好运。