2012-10-16 2 views
5

Я использую структуру Yii, чтобы создать систему отслеживания проектов бедных людей. Цель состоит в том, чтобы иметь виджет/форму «crud», который похож на виджет заметок basecamp's, чтобы отображать примечания (примечания) с заголовком и полем содержимого. (Я больше не использую basecamp, поэтому не могу опубликовать изображение того, как выглядит их виджет заметок :-()Yii in-place crud text widget

Использование Yii У меня есть модель клиента, и я бы хотел отобразить в div все заметки, соответствующие этому клиенту и имеют функциональность CRUD для этих заметок прямо в том же webroot/client/view/client_id стр.

ближайшим реализация я нашел в Интернете делается исключительно в JQuery, jeditable, но недостатки создания и удаления функциональных возможностей. Кроме того, он не имеет модели Yii (CActiveRecord) поддержка, что означает, что необходимо жестко прокладывать данные, переданные взад и вперед по коду контроллера, без использования настроек MVC Yii.

То, что у меня есть сейчас: скрытая форма, представленная через AJAX (forcCreation) и виджет Zii CListView (для Retrieve) примечания (примечаний), который использует встроенную функцию обновления виджета zii $.fn.yiiListView.update('clistview_id');, но я скорее застрял в U и D части игры, используя виджет Yii/Zii, jquery или их комбинацию.

Мой клиент/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'),); 
    } 
    ... 
} 

Кто-нибудь есть какие-либо предложения?

+0

Модуль Yii Gii имеет этот вид виджетов (для редактирования префикса таблицы в моделировании и других вещах). Взгляните на его код. Но я думаю, что поддерживается только ОБНОВЛЕНИЕ – dInGd0nG

ответ

0

Для начала проверить это, это поможет вам понять, как вы хотите:

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/

Вы должны изучить все эти, и понять, как они работают, так что вы должны быть в состоянии взять один и расширить в соответствии с вашими потребностями. Удачи.

+0

Отлично. Я изучу все это и, надеюсь, сообщаю, как они работают вместе в ближайшее время! Спасибо. – akredible

+0

Humm, мне интересно, есть ли уже виджет, который делает то, что я делаю после ... даже Zend, все в порядке. Не могу позволить себе тратить время на настройку Cgridview для виджета in-place crud в качестве ограничения времени проекта (также Cgridview может быть не лучшим виджетами для отображения заметок, IMO). На данный момент я бы выбрал CRD на месте и обновил заметку на своей собственной странице. Я планирую реализовать часть D с простой ajaxbutton в itemview в CListView. – akredible

+0

смог выполнить задачу обновления с помощью jeditable из [link] (http://help.discretelogix.com/php/yii/enable-in-place-editing-in-yii-grid.htm) @ pentium10, приведенного выше. Удалить задачу проще, чем я ожидал, добавив «CHtml :: ajaxLink» в представление элемента (используемое CListView) с правильными данными (идентификатор примечания) и обратный вызов успеха, которые вызывают '$ .fn.yiiListView.update ('clistview_id') ', чтобы обновить виджет CListView – akredible

Смежные вопросы