Я использую структуру Yii, чтобы построить себе систему отслеживания проектов для бедняков. Цель состоит в том, чтобы иметь на месте "грубый" виджет/форму, похожую на виджет basecamp для отображения заметок. ) с заголовком и полем содержимого. (Я больше не использую basecamp, поэтому не могу опубликовать изображение того, как выглядит их виджет заметок :-()
Используя Yii, у меня есть модель клиента, и я хотел бы отображать в div все заметки, соответствующие этому клиенту, и иметь функциональность CRUD для этих заметок прямо на той же webroot/client/view/client_id
странице.
Самая близкая реализация, которую я нашел в Интернете, сделана исключительно на jquery, jeditable, но не имеет функций создания и удаления. . Кроме того, он не поддерживает модель Yii (CActiveRecord), а это означает, что необходимо жестко связать данные, передаваемые туда и обратно, в коде контроллера, не используя преимущества настройки Yii MVC.
Что у меня есть сейчас: скрытая форма, которая отправляется через AJAX (forcCreation), и виджет Zii CListView (для извлечения) заметок, который использует встроенную функцию обновления виджета zii $.fn.yiiListView.update('clistview_id');
, но я скорее застрял в части U и D игры, используя виджет Yii/Zii, jquery или их комбинацию.
Мой фрагмент 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'),);
}
...
}
У кого-нибудь есть предложения?
CHtml::ajaxLink
в представление элемента (используемое CListView) с правильными данными (идентификатор заметки) и обратный вызов успеха, который вызывает$.fn.yiiListView.update('clistview_id')
для обновления виджета CListView. 17.10.2012