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

Silverstripe v3 проблема перетаскивания перетаскиванием

Доброе утро,

Недавно я начал изучать фреймворк SilverStripe из-за его обзоров и, самое главное, лицензии. Обычно я разрабатываю с использованием других популярных систем cms, но их лицензия GPL и не подходит для этого проекта. Моя проблема в том, что это плохо документировано, когда дело доходит до разработки модулей.

Я хотел бы включить простое изменение порядка перетаскивания на внутреннем интерфейсе для пользовательского модуля, см. код ниже:

class MyManager extends ModelAdmin{

    static $managed_models = array('MyTask');       
    static $url_segment = 'mymgr';
    static $menu_title = 'My Manager';

    public function getCMSFields(){ 
        $fields=parent::getCMSFields();
        $fields->addFieldToTab('Root.MyTask', 
            GridField::create(
                    'MyTask', 
                    'Data Object', 
                    $this->MyTask(), 
                    GridFieldConfig_RecordEditor::create() 
                    ->addComponent(new GridFieldSortableRows('Weight'))
            ) 
        );
        return $fields; 
    }

}//class

class MyTask extends DataObject{
    static $db = array(
        'Title' => 'Varchar',
        'Description' => 'Text',
        'Weight' => 'Int',
        'IsActive' => 'Boolean'
    );
}//MyTask

Примечание. Я уже прочитал это (http://www.silverstripe.org/community/forums/general-questions/show/20323), не очень помогло.

Заранее спасибо за вашу помощь.


Ответы:


1

Если вы используете ModelAdmin, вы должны использовать метод getEditForm (а не getCMSFields), который генерирует форму CMS. Итак, все, что вам нужно сделать, это добавить компонент в GridField, и это должно сделать это:

public function getEditForm($id = null, $fields = null)
{
  $form = parent::getEditForm($id, $fields);

  $tasksGridField = $form->Fields()->fieldByName('MyTask');

  if ($tasksGridField)
  {
      $tasksGridField->getConfig()->addComponent(new GridFieldSortableRows('Weight'));
  }

  return $form;
}

Вы также можете/должны добавить private static $default_sort = 'Weight ASC' к вашему MyTask DataObject, чтобы по умолчанию они отображались в правильном порядке.

25.10.2014
  • Спасибо. Он работает так, как ожидалось. Можете ли вы указать мне направление, где я могу получить надлежащую документацию? Спасибо. 28.10.2014
  • Вы можете проверить документ ModelAdmin, там довольно много информации о настройке и расширении интерфейса doc.silverstripe.org/framework/en/reference/ с примерами добавления дополнительных компонентов в GF... 28.10.2014
  • Спасибо. Просматривал API, учебные пособия и т. Д. Я не знаю, могу ли я задать здесь еще один вопрос, связанный с SS, или мне нужно повторно опубликовать: в основном, у меня есть перечисление в DataObject и я хотел бы отобразить его в Представление ModelAdmin GridField. Не могу найти что-нибудь по нему. Пробовал это, но это не сработало: [код] $gridField = $form-›Fields()-›fieldByName('EnumFieldName'); if ($gridField) { $gridField->getConfig()->addComponent(new GridFieldFilterHeader()); } [/код] 28.10.2014
  • Обычно это делается через статическое поле dataObject summaray_field, не более того. Однако лучше всего опубликовать это в другом вопросе, чтобы его было легче смотреть/ответить. 29.10.2014
  • Хорошо отметил. Большое спасибо за всю вашу помощь, это очень ценится. 29.10.2014
  • Новые материалы

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

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

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

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

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

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

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