【发布时间】:2012-10-06 06:18:16
【问题描述】:
我正在使用 Yii 框架为自己构建一个穷人的项目跟踪系统。目标是有一个类似于basecamp's note 小部件的“crud”小部件/表单来显示带有标题和内容字段的注释。 (我不再使用 basecamp,因此无法发布他们的笔记小部件的图像:-( )
使用 Yii,我有一个客户端模型,我想在一个 div 中显示与该客户端对应的所有注释,并在同一 webroot/client/view/client_id 页面中为这些注释提供 CRUD 功能。
我在网上找到的最接近的实现完全是在 jquery 中完成的,jeditable,但缺少创建和删除功能。此外,它不支持 Yii 模型 (CActiveRecord),这意味着需要硬连线控制器代码中来回传输的数据,而不利用 Yii 的 MVC 设置。
我现在拥有的:通过 AJAX (forcCreation) 提交的隐藏表单和笔记的 Zii CListView 小部件(用于检索),它利用了内置的 zii 小部件更新功能$.fn.yiiListView.update('clistview_id');,但我更倾向于使用 Yii/Zii 小部件、jquery 或它们的组合来玩游戏的 U 和 D 部分。
我的客户端/view.php sn-p:
<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'),);
}
...
}
有人有什么建议吗?
【问题讨论】:
-
Yii 的 Gii 模块有这种小部件(用于在模型生成和其他东西中编辑表前缀)。看看它的代码。但我认为只支持 UPDATE