2012-10-16 14 views
5

Używam frameworków Yii do zbudowania systemu śledzenia projektu dla biedaka. Celem jest posiadanie na miejscu widżetu/formularza "crud", który jest podobny do widżetu noty o nazwie basecamp's, aby wyświetlać notatki z tytułem i polem treści. (Nie używam już basecamp, dlatego nie mogę opublikować obrazu tego, jak wygląda jego widżet notatki :-()Yii lokalny widget tekstowy crud

Używając Yii, mam model klienta i chciałbym wyświetlić w dziale wszystkie uwagi odpowiadające temu klientowi i mają funkcjonalność CRUD dla tych notatek prawo w tym samym webroot/client/view/client_id stronie.

najbliższa realizacja znalazłem w Internecie odbywa się wyłącznie w jQuery jeditable, ale braki tworzyć i usuwać funkcjonalności. Ponadto, nie ma modelu Yii (CActiveRecord) wsparcie, co oznacza, że ​​trzeba mocno przesyłać dane przesyłane tam iz powrotem w kodzie sterownika bez korzystania z konfiguracji YVI MVC.Co mam teraz: Ukryty formularz, który został przesłany za pośrednictwem AJAX (forcCreation) i widget Zii CListView (do pobierania) banknotów, który korzysta z wbudowanej funkcji aktualizacji widgetu zii $.fn.yiiListView.update('clistview_id');, ale ja raczej utknął w części U i D gry za pomocą widżetu Yii/Zii, jquery lub ich kombinacji.

Mój klient/view.php urywek:

<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> 

Bardzo prosty Uwaga Model:

<?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'),); 
    } 
    ... 
} 

Czy ktoś ma jakieś sugestie?

+0

Moduł Yii's Gii ma tego rodzaju widget (do edycji przedrostka tabeli w generowaniu modelu i innych rzeczy). Rzuć okiem na jego kod. Ale myślę, że tylko UPDATE jest obsługiwany – dInGd0nG

Odpowiedz

0

Na początek sprawdź to, to pomoże Ci zrozumieć, jak chcesz:

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

po rozumieć, trzeba stworzyć swój własny widget, który robi to

można sprawdzić na istniejące rozszerzenia, która stara się zrobić to, czego po: http://www.yiiframework.com/extension/editablegridview/

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

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

Trzeba uczyć tych wszystkich, i zrozumieć, jak one działają, więc powinieneś być w stanie przyjąć jedną i rozszerzenia do swoich potrzeb. Powodzenia.

+0

Świetny. Przestudiuję to wszystko i, miejmy nadzieję, zgłoś się wkrótce, jak się razem wypracują! Dziękuję Ci. – akredible

+0

Humm, Zastanawiam się, czy istnieje już widget, który robi to, po co jestem ... nawet Zend jest w porządku. Nie można sobie pozwolić na poświęcanie czasu na dostosowywanie Cgridview do lokalnego widgetu crud jako ograniczenia czasu projektu (również Cgridview może nie być najlepszym widgetem do wyświetlania notatek, IMO). Na razie wybrałbym CRD na miejscu i zaktualizowałbym notatkę na jej własnej stronie. Planuję wdrożenie części D za pomocą prostego przycisku ajax w widoku elementu w CListView. – akredible

+0

udało się zaadresować zadanie aktualizacji za pomocą metody jeditable z [link] (http://help.discretelogix.com/php/yii/enable-in-place-editing-in-yii-grid.htm) @ pentium10 podanych powyżej. Usuń zadanie jest łatwiejsze niż się spodziewałem, dodając widok 'CHtml :: ajaxLink' do widoku elementu (używanego przez CListView) z właściwymi danymi (id note) i sukcesem zwrotnym, które wywołują' $ .fn.yiiListView.update ('clistview_id') ', aby odświeżyć widżet CListView – akredible