2012-10-16 6 views
5

Ich benutze Yii-Framework, um mir ein Projekt-Tracking-System eines armen Mannes zu bauen. Das Ziel besteht darin, ein "Crud" -Widget/-Formular zu verwenden, das dem Notiz-Widget basecamp's ähnlich ist, um Notizen mit einem Titel und einem Inhaltsfeld anzuzeigen. (Ich benutze Basecamp nicht mehr, daher kann ich das Bild dessen, wie das Notiz Widget aussieht, nicht posten :-()Yii-In-Place-Crud-Text-Widget

Mit Yii habe ich ein Client Modell und möchte in einem div alle Notizen anzeigen, die diesem Client entsprechen und haben CRUD-Funktionalität für diese Notizen direkt in der gleichen webroot/client/view/client_id Seite.

die nächste Umsetzung fand ich online erfolgt rein in jquery, jeditable, aber es fehlt der erstellen und löschen Funktionalität. Außerdem hat es keine Yü-Modell (CActiveRecord) Unterstützung, was bedeutet, dass man die Daten, die im Controller-Code hin und her übertragen werden, fest verdrahten muss, ohne die Vorteile des MVC-Aufbaus von Yii zu nutzen.

Was ich jetzt habe: Ein verstecktes Formular, das über AJAX (forcCreation) und ein Zii CListView-Widget (zum Abrufen) der Notiz (en) eingereicht wurde, das die integrierte zii-Widget-Aktualisierungsfunktionalität nutzt $.fn.yiiListView.update('clistview_id');, aber ich bin eher stecken auf dem U- und D-Teil des Spiels mit Yii/Zii-Widget, jQuery oder eine Kombination aus diesen.

Mein Klient/view.php Schnipsel:

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

Ein sehr einfaches Hinweis Modell:

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

Hat jemand irgendwelche Vorschläge?

+0

Yii's Gii-Modul hat diese Art von Widget (zum Bearbeiten von Tabellen-Präfix in der Modellgenerierung und andere Sachen). Schau dir seinen Code an. Aber ich denke, nur UPDATE wird unterstützt – dInGd0nG

Antwort

0

Für den Start dieses Check-out, es hilft Ihnen, zu verstehen, wie wollen Sie:

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

, nachdem Sie verstehen, müssen Sie Ihr eigenes Widget erstellen, die diese

tut können Sie überprüfen, aus bestehenden Erweiterungen, die versucht zu tun, was Sie nach: http://www.yiiframework.com/extension/editablegridview/

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

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

Sie müssen alle diese studieren und zu verstehen, wie sie funktionieren, so sollten Sie in der Lage sein, einen zu nehmen und sich an Ihre Bedürfnisse anzupassen. Viel Glück.

+0

Großartig. Ich werde all das studieren und, hoffentlich zurück melden, wie sie bald zusammen arbeiten! Danke. – akredible

+0

Humm, ich frage mich, ob es schon ein Widget gibt, das tut, was ich möchte ... sogar ein Zend ist in Ordnung. Kann es sich nicht leisten, Cgridview für ein In-Place-Crud-Widget anzupassen, da die Zeitbeschränkung für das Projekt gilt (auch Cgridview ist möglicherweise nicht das beste Widget zum Anzeigen von Notizen, IMO). Fürs Erste würde ich für die direkte CRD gehen und die Notiz auf ihrer eigenen Seite aktualisieren. Ich plane, den D-Teil mit einem einfachen Ajaxbutton in der Artikelansicht in CListView zu implementieren. – akredible

+0

war in der Lage, die Update-Aufgabe mit Hilfe von Jeditable von [Link] (http://help.discretelogix.com/php/yii/enable-in-place-editing-in-yii-grid.htm) @ Pentium10 oben zur Verfügung gestellt. Löschen Aufgabe ist einfacher als ich erwartet, durch Hinzufügen eines 'CHtml :: ajaxLink' zu Item-View (von CListView verwendet) mit richtigen Daten (Note-ID) und einem Erfolg Callback, die' $ .fn.yiiListView.update ('clistview_id' aufrufen) 'um das CListView Widget zu aktualisieren – akredible