Nano Hash - криптовалюты, майнинг, программирование

Текстовый виджет Yii на месте

Я использую структуру 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'),);
    }
    ...
}

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

16.10.2012

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

Ответы:


1

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

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/

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

16.10.2012
  • Здорово. Я изучу все это и, надеюсь, скоро сообщу, как они работают вместе! Спасибо. 17.10.2012
  • Хм, интересно, есть ли уже виджет, который делает то, что мне нужно... даже Zend в порядке. Не могу позволить себе тратить время на настройку Cgridview для виджета crud на месте в качестве временного ограничения проекта (также Cgridview может быть не лучшим виджетом для отображения заметок, IMO). На данный момент я бы выбрал CRD на месте и обновил примечание на отдельной странице. Я планирую реализовать часть D с помощью простой кнопки ajax в представлении элементов в CListView. 17.10.2012
  • удалось решить задачу обновления с помощью jeditable из ссылка @pentium10 указана выше. Удалить задачу проще, чем я ожидал, добавив CHtml::ajaxLink в представление элемента (используемое CListView) с правильными данными (идентификатор заметки) и обратный вызов успеха, который вызывает $.fn.yiiListView.update('clistview_id') для обновления виджета CListView. 17.10.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..