ICStudio
Услуги
ПортфолиоКейсы
Инструменты
ДемоБлог
ICStudio
ГлавнаяБлогДублирование записей в OctoberCMS

Дублирование записей в OctoberCMS

При создании контента в OctoberCMS часто возникает необходимость скопировать (клонировать) какую-то Модель. Или проще говоря на языке Ваших клиентов: а как мне скопировать существующую запись? Учитывая частоту запроса на этот фунционал, я хочу подать идею генерировать этот блок кода по умолчанию в Rainlab.Builder 😎

Опубликовано: 10/25/2021

При создании контента в OctoberCMS часто возникает необходимость скопировать (клонировать) какую-то Модель.

Или проще говоря на языке Ваших клиентов: а как мне скопировать существующую запись? Учитывая частоту запроса на этот фунционал, я хочу подать идею генерировать этот блок кода по умолчанию в Rainlab.Builder 😎

Для начала найдите необходимый контроллер вашего плагина, например plugins/icstudio/control/controllers/Tariffs.php

Теперь добавим в него новый метод, который будет создавать копии необходимых Моделей. В Интернетах можно встретить аналогичный код, но мы его доработали, поэтому копипастой его использовать не рекомендуется.

  • к имени записи добавится цифра 2;
  • в slug добавится цифра 2;
  • ключ is_active будет выведен в 0. Это обезопасит ваш продакшн от вывода неверных данных.

public function onDuplicate() { $checked_items_ids = input('checked'); foreach ($checked_items_ids as $id) { $original = TariffModel::where("id", $id)->first(); $clone = $original->replicate(); $clone->name = $clone->name . '2'; $clone->slug = $clone->slug . '2'; $clone->service_name = $clone->service_name . '2'; $clone->is_active = 0; $clone->save(); } Flash::success('Записи скопированы'); return $this->listRefresh(); }

Теперь надо привязать этот экшн к верстке бекенда. Для этого найдите файл _list_toolbar.htm для вашего контроллера, например для контроллера из примера путь к этому файлу будет такой: plugins/icstudio/control/controllers/tariffs/_list_toolbar.htm

Добавим этот код, чтобы вывести кнопку:

class="btn btn-default oc-icon-clone" disabled="disabled" onclick="$(this).data('request-data', { checked: $('.control-list').listWidget('getChecked') })" data-request="onDuplicate" data-request-confirm="Хотите скопировать указанные записи?" data-trigger-action="enable" data-trigger=".control-list input[type=checkbox]" data-trigger-condition="checked" data-request-success="$(this).prop('disabled', true)" data-stripe-load-indicator> Копировать выбранные записи

Код кнопки должен быть внутри

...


Сохраняем, чистим кеш и любуемся:

Поделиться:

Хотите работать с нами?

Обсудим ваш проект и найдём лучшее решение

Связаться с нами

Похожие статьи

10/16/2024

Почему October CMS — идеальный выбор для креативных бизнесов и бизнесов с нестандартными бизнес-процессами

10/14/2024

Безопасность онлайн-платежей: Как обеспечить защиту данных клиентов в вашем проекте на Laravel?

5/17/2023

Программное обеспечение для ломбардов: преимущества, функции, требования

ICStudio

Профессиональная веб-разработка и IT-решения для бизнеса

Быстрые ссылки

  • Главная
  • Портфолио
  • Кейсы
  • Блог
  • Команда

Resources

  • Tools
  • AI Chatbots
  • Demo
  • Docs
  • Pilot Program
  • Hire Us

Услуги

  • Web Development
  • E-commerce
  • CRM
  • Support

Контакты

  • hello@icstudio.online
  • +38 099 123 45 67
  • Kyiv, Ukraine

© 2026 IC Studio. Все права защищены.

Политика конфиденциальностиУсловия использованияService Terms