2012-10-16 36 views
5

Tôi đang sử dụng khung công tác Yii để xây dựng bản thân hệ thống theo dõi dự án của một người đàn ông nghèo. Mục tiêu là phải có một widget/biểu mẫu "quấy rối" tương tự như basecamp's tiện ích ghi chú để hiển thị ghi chú có tiêu đề và trường nội dung. (Tôi không còn sử dụng basecamp do đó không thể đăng hình ảnh của tiện ích con ghi chú của họ trông như thế nào :-()Tiện ích văn bản crud tại chỗ của Yii

Sử dụng Yii, tôi có mô hình khách hàng và tôi muốn hiển thị trong div tất cả ghi chú tương ứng với khách hàng này và có chức năng CRUD cho các ghi chú này ngay trong cùng một trang webroot/client/view/client_id.

Triển khai gần nhất tôi tìm thấy trực tuyến được thực hiện hoàn toàn trong jquery, jeditable, nhưng thiếu chức năng tạo và xóa. Ngoài ra, nó không có mô hình Yii (CActiveRecord) hỗ trợ, có nghĩa là một trong những nhu cầu để cứng dây dữ liệu truyền qua lại trong mã điều khiển mà không tận dụng lợi thế của thiết lập MVC của Yii.Những gì tôi có bây giờ: Một biểu mẫu ẩn được gửi qua AJAX (forcCreation) và tiện ích Zii CListView (dành cho Retrieve) của ghi chú, lợi dụng chức năng cập nhật tiện ích zii được tích hợp sẵn $.fn.yiiListView.update('clistview_id');, nhưng tôi thích bị mắc kẹt trên phần U và D của trò chơi sử dụng tiện ích Yii/Zii, jquery hoặc kết hợp những thứ đó.

Khách hàng của tôi/view.php đoạn:

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

Lưu ý rất đơn giản mẫu:

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

Có ai có bất cứ đề nghị?

+0

Mô-đun Gii của Yii có loại tiện ích này (để chỉnh sửa tiền tố bảng trong tạo mô hình và các nội dung khác). Hãy xem mã của nó. Nhưng tôi nghĩ rằng chỉ UPDATE được hỗ trợ – dInGd0nG

Trả lời

0

Đối đầu kiểm tra này, nó sẽ giúp bạn hiểu làm thế nào để bạn muốn:

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

sau khi bạn hiểu, bạn cần tạo phụ tùng của riêng bạn mà thực hiện điều này

bạn có thể kiểm tra tiện ích mở rộng hiện có mà cố gắng để làm những gì bạn đang sau: http://www.yiiframework.com/extension/editablegridview/

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

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

Bạn cần nghiên cứu tất cả những điều này và hiểu cách chúng hoạt động, vì vậy bạn có thể lấy và mở rộng để phù hợp với nhu cầu của mình. Chúc may mắn.

+0

Tuyệt vời. Tôi sẽ nghiên cứu tất cả những điều này và hy vọng báo cáo lại cách chúng kết hợp với nhau sớm! cảm ơn bạn. – akredible

+0

Humm, tôi tự hỏi nếu đã có một widget đang làm những gì tôi sau ... ngay cả một Zend một là tốt. Không thể dành nhiều thời gian tùy biến Cgridview cho một tiện ích crud tại chỗ như ràng buộc thời gian dự án (cũng Cgridview có thể không phải là widget tốt nhất để hiển thị ghi chú, IMO). Để bây giờ, tôi sẽ đi cho CRD tại chỗ và cập nhật các lưu ý trong trang riêng của mình. Tôi có kế hoạch thực hiện phần D với một ajaxbutton đơn giản trong itemview trong CListView. – akredible

+0

có thể giải quyết tác vụ cập nhật bằng jeditable từ [link] (http://help.discretelogix.com/php/yii/enable-in-place-editing-in-yii-grid.htm) @ pentium10 được cung cấp ở trên. Xóa nhiệm vụ dễ hơn tôi mong đợi, bằng cách thêm 'CHtml :: ajaxLink' vào mục xem (được sử dụng bởi CListView) với dữ liệu thích hợp (id ghi chú) và gọi lại thành công gọi' $ .fn.yiiListView.update ('clistview_id') 'để làm mới tiện ích CListView – akredible

Các vấn đề liên quan