Evolution CMS (2.0 alpha) на компонентах Laravel

MODX Evolution is dead long live Evolution CMS on Laravel components



Что такое Evolution CMS 2.0?
Этот все тот же MODX Evolution, вот только под капотом будет уже не просто набор каких-то разрозненных функций, объединенных в класс под названием DocumentParser, а целый ряд компонентов, тех самых на которых собран и фреймворк Laravel. Это позволяет нам не писать кучу новой документации и примеров про кешер, события, логирование, файловую систему, кофиги, консоль, миграции, сиды, шаблонизатор Blade, модели Eloquent, Observers, ServiceProvider…

evo1

evo2

evo3

evo4

Немного истории
— Разработчики Рэймонд Ирвинг (англ. Raymond Irving) и Райан Траш (англ. Ryan Thrash) представили первый релиз MODX CMS в 2004 году.
— С 2012 Года после выхода MODX Revolution, версия Evolution командой разработки MODX LLC больше не поддерживается, но при этом активно развивается силами сообщества MODX Evolution, не уступая в развитии новой ветке.
— В марте 2013 выходит релиз 1.0.9 ( habr.com/post/173667/ ), который создан исключительно силами сообщества, под руководством Дмитрия Лукьяненко и Евгения Борисова (продолжающих работать над Evo и по сей день). Но релизы все еще выходят под эгидой MODX LCC (с публикацией на modx.com).
— В апреле 2017 MODX LCC приняли решение полностью отказаться от продвижения MODX Evolution ( modx.com/blog/evolution-cms-has-a-new-home ). И с этих пор нашей командой был выбран свой собственный курс развития, не ставящий целью гонку за MODX REVO, как это было ранее.
— В июле 2017 выходит первый релиз Evolution CMS 1.3.0 github.com/evolution-cms/evolution/releases/tag/1.3.0 с полностью переработанным дизайном и целым рядом новых возможностей, воплотивших пожелания сообщества.
— В ноябре на конференции MODXpo 2017 Лукьяненко Дмитрий успешно выступает с докладом о делах в Evolution CMS (https://modcasts.video/videos/evo-cms-life-after-modx).
— Январь 2018. Выход второго крупного релиза Evolution CMS 1.4.0 ( github.com/evolution-cms/evolution/releases/tag/1.4.0 ), кардинально изменившим ряд подходов в разработке.
— Июнь 2018. Принято решение о том чтобы переписать Evolution CMS с использованием компонентов Laravel, но с обязательным условием сохранения полной обратной совместимости.
— Декабрь 2018. Состоялся первый релиз Evolution CMS 2.0.

Очень важным моментом было условие обратной совместимости со старыми версиями системы и у нас это получилось! Можно смело обновить сайт с версии 0.9.6 выпущенной в 2005 году до новой 2.0. Поправить придется только тот код который был написан без учета API системы. Все стандартные дополнения также обновляются и функционируют на новой версии.

Почему именно Laravel?
Обширная документация. Активная поддержка. Множество готовых пакетов, которые можно будет использовать и на Evolution 2.0 Изначально мы видели лишь два пути: работать и дальше с устаревшим кодом Evolution, пока это пипл хавает, а сообщество не разбежалось, либо же начать писать новый проект стараясь максимально сохранить старую парадигму разработки с деревом ресурсов, чанками, сниппетами, ТВ параметрами и т.д. Но мы нашли третий вариант в котором понемногу адаптируем устаревший код, сохраняя при этом обратную совместимость.

В ветке 2.0 можно будет работать по старому?
Да, можно. Старые конструкции будут и дальше работать, но всю гибкость нововведений вряд ли раскроют. Банальный переход от массива $modx->config к методу $modx->getConfig() уже позволит манипулировать системными настройками движка, которые берутся из базы. А совершить такой переход в сниппетах можно уже сейчас, не обновляясь до версии 2.0, т.к. метод getConfig() есть и в версии 1.4. Плагины на события можно вешать как раньше через админку или через файлы. Все это совершенствует командную разработку, упрощает ведение проекта через git. Разработчики оценят удобство, для остальных внешние изменения не будут столь значительными.

Под EVO мало готовых решений. Не лучше ли было потратить время на их разработку вместо нового релиза?
Разработчиков, которые способны написать более или менее вменяемое дополнение в сообществе осталось довольно неммного. Многим просто надоело говнокодить и изобретать велосипеды чтобы поддерживать проблемы старых версий.

Даже если рассматривать на примере файловой системы, то есть целый ряд проблем: нет возможности работать с файлами (копировать, перемещать, удалять) и все это рекурсивно с правильной расстановкой прав которые выставлены в настройках движка. При работе с базой мы вынуждены постоянно заботиться об sql-injection, т.к. зачастую работа происходит с сырыми данными. При работе с шаблонами мы вообще ничего не можем — даже стандартный метод parseChunk по умолчанию не понимает плейсхолдеров. Таким образом, вместо того, чтобы разработчик мог сосредоточиться на бизнес логике приложения, он тратит кучу времени на то, чтобы реализовать одни и те же вещи. А потом этот разработчик выпускает еще одно решение и там опять нужно сделать эти же вещи. Так появляется копипаст, который приводится к использованию однотипных классов/функций/методов в разных компонентах — яркий пример phx.

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

Зачем мне изучать что то новое а не оставаться на 1.4 ?
На версии 1.4 мы не можем установить целый сайт 1 кнопкой. Не можем работать в дев-прод версии адекватно, не можем, полноценно использовать шаблоны в файлах. Нет миграций и т. д. В версии 2.0 это все есть. Это как переход от нативных sql запросов на модели.Те, кто работает с моделями в разных фреймворках прекрасно понимают в чем преимущество. Те, кто не умеют работать делают SELECT/INSERT/UPDATE прямо в базу и считают это нормой.

Понять принципы работы в EVO можно за пару вечеров, а все остальные знания которые нужны для работы с EVO нужны также и для работы с Laravel. Теперь не нужно отдельно учить что то, что пригодиться только при использованиии EVO. Это даст универсальную возможность легко работать с EVO зная Laravel и легко переходить к Laravel, работая с EVO.

А так ли все просто и можно ли использовать готовые компоненты от Laravel?
Вот есть пакет для генерации схемы таблиц в базе (https://github.com/beyondcode/laravel-er-diagram-generator) Установка это composer require, и создание файла провайдера(core/custom/config/app/providers/Diagram_Generator.php) из 1 строчки:
return BeyondCode\ErdGenerator\ErdGeneratorServiceProvider::class;

Все!

Ближе к делу:


Новые настройки и первые плюсы
— Вся папка core/config и core/custom/config уже работает с конфигами в стиле Laravel. Для задействования .env файла необходимо установить пакет vlucas/phpdotenv

— Работа с Composer: добавление зависимостей в core/custom/composer.json и выполнение composer upd из папки core

— Для удобства работы включим инструменты для отладки: Debug и debugbar Tracy
— Debug: cоздаем файл core/custom/config/app/debug.php с содержимым:
<?php 
		return true;

— Функция dump которая показывает информацию в красивом виде:
<?php 
		dump($modx);

— Папка с логами ошибок core/storege/logs
— Tracy: cоздаем файл core/custom/config/tracy/active.php с содержимым:
<?php 
		return 'manager';

tracy

Работа с Шаблонами и Чанками с использованием шаблонизатора BLADE из файлов без использования админки


Привязка шаблонов к документу без необходимости заходить в админку EVO
Для работы нам потребуется создать папку views в корне сайта, в которой у нас будут располагаться шаблоны. Собственно и все, никаких дополнительных действий в виде установки чего-либо не требуется.

Evo будет искать шаблоны в следующем порядке:
— tpl-3_doc-5.blade.php — используется для ресурса с id 5 и шаблоном 3;
— doc-5.blade.php — используется для ресурса с id 5;
— tpl-3.blade.php — используется для всех ресурсов с шаблоном 3.

Работа со стандартными элементами посредством шаблонизатора BLADE
Прежде чем приступать к работе с BLADE настоятельно рекомендуем ознакомиться с документацией BLADE: laravel.com/docs/5.7/blade

//Вывести плейсхолдер [*pagetitle*]:
{{ $documentObject['pagetitle'] }}
{{ $modx->documentObject['pagetitle'] }}

//Вывести плейсхолдер TV
{{ $documentObject['image'] }}
{{ $modx->documentObject['image']['1'] }}

//Вывести урл [~2~]
{{ urlProcessor::makeUrl('2') }}
{{ $modx->makeUrl('2') }}
@makeUrl('2')

//Вывести системную настройку [(site_name)]
{{ $modx->getConfig('site_name') }}

//Вывести чанк из базы: {{chunkFromDb}}
{{ $modx->getChunk('chunkFromDb') }} 

//Вывести чанк из файла: (/views/partials/chunk.blade.php)
@include('partials.chunk', ['some' => 'data'])

//Вывести сниппет: [[DocInfo? &docid=`2`]] 
{{ $modx->runSnippet('DocInfo',['docid' => '2']) }}

//Вывести результат работы снипета не экранируя html теги  
{!! $modx->runSnippet('DocInfo',['docid' => '2']) !!}

//Стандартный парсер
@evoParser('[*pagetitle*] [(site_name)] [[DocInfo]] {{chunkOld}}')

//Использование комментариев 
{{-- Этого комментария не будет в итоговом HTML --}}

//Обработка в цикле и IF (Все из документации по BLADE):
@for ($i = 1; $i <= 10; $i++)
  {{ $i }}
  @if ($i != 10)
  , 
  @endif
@endfor

//Работа с php внутри шаблона (настоятельно не рекомендуюется)
@php
  dump($modx); //красивый var_dump
  $chunk = '{{ $data["param1"] }}';
  $chunk .= '{!! $data["param1"] !!}';
@endphp
//или
<?php
  dump($modx); //красивый var_dump
  $chunk = '{{ $data["param1"] }}';
  $chunk .= '{!! $data["param1"] !!}';
?>

{{ $modx->tpl->parseChunk('@B_CODE:'.$chunk, ['param1' => 'value with "quote"']) }}
{{ time() }}

//Докликстер с использованием инлайновой шаблонизации на BLADE
{!! $modx->runSnippet('DocLister',['parents' => '0', 'tpl' => '@B_CODE:{{ $data["pagetitle"] }}<br />']) !!}

//Докликстер с использованием шаблонизации на BLADE из файла (/views/partials/doc-tpl.blade.php)
{!! $modx->runSnippet('DocLister',[
  'parents' => '2', 
	'tpl' => '@B_FILE:partials/doc-tpl',
	]) 
!!}


Пример готового шаблона с использованием BLADE можно глянуть тут: github.com/dmi3yy/Evo-demosite-on-blade

Работа со сниппетами и плагинами из файлов без использования админки, а также использование событий Laravel
В Evolution 2.0 вводим новую сущность package. Это пакет дополнений который может включать в себя сниппеты, плагины, чанки, модули. Модули пока требуют прописывать себя через админку, но в будущем переделаем, чтобы автоматически подтягивались, также как и все остальные элементы.

1. Создадим наш пакет(example):

Создадим файл: core/custom/packages/example/src/ExampleServiceProvider.php
<?php namespace EvolutionCMS\Custom;

use EvolutionCMS\ServiceProvider;
use Event;

class ExampleServiceProvider extends ServiceProvider
{
    /**
     * Если указать пустую строку, то сниппеты и чанки будут иметь привычное нам именование
     * Допустим, файл test создаст чанк/сниппет с именем test
     * Если же указан namespace то файл test создаст чанк/сниппет с именем example#test
     * При этом поддерживаются файлы в подпапках. Т.е. файл test из папки subdir создаст элемент с именем subdir/test
     */

    protected $namespace = 'example';

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->loadSnippetsFrom(
            dirname(__DIR__). '/snippets/',
            $this->namespace
        );

        $this->loadChunksFrom(
            dirname(__DIR__) . '/chunks/',
            $this->namespace
        );
	//Тут работаем с событиями как EVO так и Laravel:
        Event::listen('evolution.OnWebPageComplete', function($params) {
            echo '<p>Hello Evo events.</p>';
        });
	
	
    }
}


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

2. Обновляем composer для packages:
Создаем файл: core/custom/composer.json

{
  "name": "evolutioncms/custom",
  "require": {
    "barryvdh/laravel-ide-helper": "~2.4",
    "vlucas/phpdotenv": "~2.2"
  },
  "autoload": {
    "psr-4": {
      "EvolutionCMS\\Custom\\": "packages/example/src/",
    }
  }
}

Выполняем комманду: composer upd из папки core

3. Зарегистрируем наш пакет в EVO:
Создадим файл: core/custom/config/app/providers/Package_Example.php

<?php
	return EvolutionCMS\Custom\ExampleServiceProvider::class;


4. Добавим чанк:

Создадим файл: core/custom/packages/example/chunks/subdir/test.html
Пример [+time+], [+content+]


Содержимое этого файла обрабатывается парсером MODX, соответственно в нем можно использовать обычные плейсхолдеры MODX (пример с поддержкой чанков с BLADE будет позже).

5. Добавим сниппет:

Создадим файл: core/custom/packages/example/snippet/subdir/test.php

<?php
return $modx->parseChunk('example#subdir\test', [
    'time' => time(),
    'content' => 'zxc'
], '[+', '+]');


Вызывать сниппет в текущем примере нужно вот так:

Парсер MODX: [[example#subdir\test]] 
Парсер Blade: {{ $modx->runSnippet('example#subdir\test') }}


Но если не указывать неймспейс для пакета и не вкладывать сниппет в подпапку, то получим всем привычный вариант

[[test]]


Таким образом мы видим, что теперь можно полноценно работать с дополнениями Evo без необходимости хранить код в Базе данных. При этом оставив полную обратную совместимость с предыдущими версиями.

Работа с DB, MODELS
Все согласно документации Laravel laravel.com/docs/5.7/database, laravel.com/docs/5.7/eloquent Модели в папке core/src/Models с namespace EvolutionCMS\Models. Пример:

$out = EvolutionCMS\Models\SiteContent::where('parent', '=', 0)
    ->orderBy('pagetitle', 'DESC')
    ->limit(10)
    ->get();
foreach ($out as $item) {
    echo "\t [ DOCUMENT #ID " . $item->id . ' ] ' . $item->pagetitle .PHP_EOL;
}


Из ближайших планов:

— Закончить работы по рефакторингу шаблонов админки с полным переносом их на BLADE
— Больше удобства для работы с DEV PROD: миграции, cиды, работа через консоль(artisan), решение проблемы с тем что на DEV и PROD разные id у документов.


— Отделение ядра от дополнений и перенос выбора что установить по умолчанию в момент установки (все что выбрали загрузится и установиться, а остальное не будет загружено).
— Доработка виджета для контроля устаревших дополнений и своевременном уведомлении о том, что рекомендуется обновить, с различным уровнем приоритетов.
— А так же больше документации и примеров.

Как помочь с тестированием?
Присылайте ваши пожелания и багрепорты на github: github.com/evolution-cms/evolution/issues
Обязательно указывайте:
— Версию EVO
— Версию PHP
— Версию Mysql
— Скрин с ошибкой
— Как воспроизвести

Это поможет больше времени потратить на код, а не на выяснения что же не работает

Полезные ссылки:

— Скачать Evolution CMS можно тут: github.com/evolution-cms/evolution/releases
github.com/evolution-cms/evolution/releases/tag/2.0.0-alpha
— Официальный репозиторий: github.com/evolution-cms/evolution
— Официальный сайт: evo.im (скоро обновим на нормальный)
— Официальный Slack: evocmf.slack.com
— Официальный Telegram чат: t.me/evolutioncms
— Официальный Telegram канал новостей: t.me/evolutioncmsnews

60 комментариев

avatar
И сразу мануал по обновлению:
www.youtube.com/watch?v=xR9filu4A8o
avatar
Один маленький вопрос: Почему версия 2.00 ALPHA, не презназаначенная для публичного использования, предлагается к обновлению через Updater?
По остальному — пошел курить мануалы
avatar
Косяк ;( не проверил поидее вообще надо что б аплейтер не предлагал обновляться на мажорные версии
avatar
А то у меня щас бравый падаван понажимает на кнопочку в админке и кирдык котенку
avatar
Есть ли какой-то список дополнений, который будет в версии 2.0 по дефолту и уже работать на новом синтаксисе этого всего?
ИМХО, сейчас набор «из коробки» достаточно скуден, это, конечно, позволяет сколько угодно собирать свой велосипед, но неплохо бы добавить в компоненты не только меню и вывод списка документов.

В первом приближении это:
Всё, что было с приставкой simple-(галерея, файлы, видео)
Вынос и создание любого количества дополнительных настроек, которые можно вызывать по типу системных плейсхолдеров (Client Settings)
MultiTv/multiplefields/аналог?..
avatar
Будет немного по другому когда запилим новый экстрас.

Вообщем все будет надо только время и ресурсы ;)
avatar
github.com/AgelxNash/Evo-QThumb пока единственное решение
avatar
На этапе проверки соединения с БД ничего не происходит при нажатии на ссылку
«Нажмите здесь для проверки соединения с вашим сервером базы данных и получения сопоставления кодировки»
В консоли ошибок нет. Браузер firefox
avatar
Это из-за того, что конфиг переехал куда-то в другое место? или надо устанавливать через 1.4.7? тогда бы инсталлятор убрали
avatar
Да, конфиг переехал в core/config

Позже сделаю скрипт обновления но пока руками
Видео инструкция в первом посте
avatar
Получается, что и незачем было 1-click installer обновлять :) Скачать-то он скачивает, а что дальше делать инсталлятор 2.0 не знает
avatar
Да, я сначала тоже не понял, что происходит.

Потом уже посмотрел мануал по обновлению до 2 версии, и увидел, что руками надо.

Кстати, в мануале непонятно по поводу файлика default.php, образец где-либо есть, чтоб только значения на свои заменить? или надо с видео «списывать» вручную?
avatar
Ок, благодарю. Будем пробовать новую Эворавель ))

Пока что для меня очевидны только выгоды Blade-шаблонизации на фронте.

Видимо, придется вспомнить, чему учили в универе (проектирование СУБД и так далее) и тогда уже «зайдут» и модели и так далее.

И ещё, очевидно, что админка выйдет на другой уровень, когда переделается на Блейд, вот по этой теме бы больше инфы, когда у вас будет время, естественно.
Комментарий отредактирован 2018-12-24 06:34:55 пользователем Aharito
avatar
Это хорошая новость! Молодцы! Но…
Уже лет 8 работаю с Ево, даже наверное больше. И хоть я уже не фрилансер, продолжаю вести несколько проектов. Меня наверное можно назвать опытным Евопользователем. Но новые возможности Ево ставят в тупик, тут с 1.4 еще не все ясно, а с 2.0 вообще целый набор сторонних разработок, про которые наверное 80% пользователей этого сайта даже не слышали, либо слышали краем уха. Т.е. рассчитано на продвинутых. Сама идея простой и легкой в освоении КМС ушла на второй план, вернее, растворилась совсем. Да, пока еще можно работать по старинке, вон, даже Дитто еще у кого-то жив. Но получается так, что мы пересели с запорожца на космический корабль, да, тут есть привычный руль и три педали, но появилась куча кнопок и функций, про которые ничего непонятно. Без документации, без уроков, без наглядных примеров этот космический корабль так и останется для многих запорожцем.
avatar
Как для дизайнера, не-программиста, я также плюшек не вижу.
Учить новый парсер — такое себе. Рано или поздно старый перестанут поддерживать. Вместо того, чтобы добавить в него фильры, условия и тд, что можно было за 10 лет хоть как-то изобрести. Он мне нравился, и из-за него я и выбрал etomite в старолохматых годах. Тупо даже на написание плейсхолдера будет уходить больше времени.

Файловая система для хранения верстки МОИХ пары сотен проектов не пригодилась ни разу, никогда не видел от нее никакого толка. FileSource не ставлю никогда.
Комментарий отредактирован 2018-12-24 09:57:54 пользователем alexbeep
avatar
Так вы как пользовались так и можете пользоваться проблем же нет.
Для простых сайтов все как и было. А вот для сложных + для работы в команде стало все удобней. + сейчас гараздо проще и легче использовать готовые компоненты которых под ларавел куда больше чем под ево

По аизуальным наворотам пишите в чем есть потребность.
avatar
Сначала надо завести… PHP 7.4 минимум? На всех предыдущих не работает, а выше нету на хосте
avatar
7.1.3 и выше
Собственно те версии пхп которые поддерживают разработчики пхп
avatar
Не завелось и на 7.2 пока что… Попробую на отдельной площадке на какой-нибудь макс версии
avatar
По визуальным наворотам
1. Хочу делать модули с собственными таблицами из админки, не прибегая к описанию моделей и тд. Чтобы клиент мог туда что-то накрапать, а я потом их выводить на морде.
2. Множить любую TV (одномерно), и multitv/migx/multiplefields (двухмерно) искаропки.
3. Ну фильтры вывода (типа какой-нибудь чепухи преобразования из юникстайма в дату, складывать две твшки, округлять число) и условия я так понимаю blade будет сам разбираться.
4. Набор компонентов пользовательского взаимодействия. Авторизация/регистрация/камменты/добавление доп.полей юзерам, личный кабинет — всё, что сейчас есть — крайне убого описано, не готово к использованию после установки и не имеет совместимости друг с другом.
5. Импорт/экспорт материалов хотя бы из таблиц csv и подобных. Не то, чтобы EditDocs не работал, но вдруг перестанет.
6. Возможность из админки редактировать множество ресурсов одновременно (аля Collection и им подобные) или создавать наборы таких видов для родительских разделов, с разделением по ролям доступа, группам админов и тд.
avatar
Столько хотелок и все это на легаси коде, который устарел лет так 10 назад. Нет, я понимаю, что вам нет никаой разницы как это написано, но авторам кода разница есть. Особенно когда вместо велосипедов используются готовые библиотеки. Взять тот же simpleTube. Он использует github.com/frandieguez/panorama-php и вынужден тянуть все классы за собой. А потом появится еще один компонент которому нужны эти классы. Тоже самое и с jquery, когда каждый плагин в админку внедряет свою версию. Так было и с DocLister, когда на его базе стали появляться решения.
avatar
Так что если для вас разницы нет, а для разработчиков есть — то будьте добры просто принять изменения как данность.
avatar
Не, на легаси-коде не хочу. Оно щас так работает.
Раз уж тут намечается новая версия — почему бы не добавить в нее функционал, нужный каждому (те же мультиполя и пользовательские функции), который так и так каждый раз все делают, но по-разному и с разными костылями.
avatar
потому, что обновить устаревший код и сохранить обратную совместимость — та еще задачка. Все ваши хотелки не ранее чем с версии 2.1
Комментарий отредактирован 2018-12-24 13:37:30 пользователем Agel_Nash
avatar
Так-то бог бы с ней, с этой обратной совместимостью. Раз уж надо как-то по-другому всё сделать — пусть так и будет. Никто же не ноет почему на новом железе старая винда не работает. Просто не только же программисты есть. Админка и так самая лучшая в мире, и если добавить из коробки то, что и так всем нужно — только лучше станет. Чтобы не было несовместимостей а-ля simpletab и того же ManagerManager selectdocuments
avatar
Как показала практика это никому не надо,
Донатов собрали 620$

Помогает с документацией 2-3 человека.

По хотелкам что написали все есть и все работает:) да где то не хватает документации гдето не совсем так как надо, но оно есть.

Хотите помочь, напишите хотя бы детальное тз и описание задачи если все оценят соберем доната под модуль и реализуем не вижу промлем.

А так вообще странно слушать претензии ибо мы делаем трятя свое время и финансы а вы еще и недавольны что вам это все бесплатно отдают
avatar
Хотелось бы понять, в каких случаях все эти навороты 2,0 могут понадобиться.
Стоит ли вообще обновлять сайт визитку, лейдинг или каталог с 1.4 до 2.0?
avatar
Большого смысла нет

По факту ветка 1.4 будет жить еще не меньше года
avatar
Если особого смысла нет, может не стоит принуждать людей к обновлению такими сообщениями?
avatar
Всё равно ничего не произойдет, если нажмете :) И сайт тоже работать не будет
avatar
Уроки и зачем это асе будет. Начну цикл уроков после 08.01.2019
avatar
/manager/
<code>Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) in /home/.../core/src/AbstractLaravel.php on line 647</code>
Удалил знак вопроса(не знаю, зачем) в github.com/evolution-cms/evolution/blob/2.x/core/src/AbstractLaravel.php#L647

Получил
<code>Warning: sprintf(): Too few arguments in /home/.../manager/index.php on line 100</code>
Да что блин такое… Сделал как в видео. Конфиг подложил. Пока безрезультатно.

Поменял версию PHP с 7.0 на 7.2.12, вернул знак вопроса обратно — белый экран в админке. Выше версии у меня нет.
Кстати, на 7.2.12 на 1.4.7 некоторые страницы отваливаются, рисуя скромный Error черным по белому
Комментарий отредактирован 2018-12-24 09:48:34 пользователем alexbeep
avatar
Очень интересно получать багрепорты сопровождаемые логами. А не просто вай-вай не работает.
А если внимательно читать топик, то об версию php можно было не споткнуться. И вместо простого error можно активировать расширеный вывод ошибки с трассировкой
avatar
Придумал тоже внимательно статью читать…
avatar
Ну вот, только я решился на изучение какого-нибудь фреймворка, долго и мучительно выбирал, выбрал наконец-то yii, а тут бац — и Laravel :)

Скажите, насколько вообще сложно Laravel осваивается, какой порог вхождения? PHP владею на уровне написания всех необходимых сниппетов для существующей версии modx, периодически пишу конвертер базы данных для перевода сайтов с других платформы (или «с нуля») на modx и т.д. Ну еще в качестве «бонуса» имею порядка 20 лет опыта программирования на С++/С. А вот с php-фреймворками да и вообще web-технологиями и их администрированием как-то пока не сложилось… Так насколько это реально быстро освоить?
Комментарий отредактирован 2018-12-24 11:25:14 пользователем Dreamer
avatar
Если понимаешь MVC и ООП то какая разница, какой фреймворк
avatar
Принцип работы yii и laravel очень похож, Вот и вот хорошие ресурсы для изучения
avatar
Подскажите, у каких файлов нужно поправить права после установки?
поставил с нуля и есть проблема с редактированием ролей — не сохраняются изменения, может где-то ещё что вылезет
спасибо!
avatar
В сниппетах и плагина global $modx будет доступен со всеми своими методами (http://docs.evo.im/03_develop/03_api.html и docs.evo.im/03_develop/04_dbapi.html), или его нужно будет «добывать» вручную?
avatar
Все как и раньше. Даже без global.

В других местах где не доступен $modx, лучше использовать функцию evolutionCMS() вместо global.

P.S. Это актуально и для 1.4 ветки
avatar
Интересно, сколько человек знало об этом до этого коммента… Подобных фичей наверное еще не один десяток наберется :)
avatar
В анонсе 1.4.4 об этом сообщалось. Кто внимательно смотрит на список изменений — должны знать.
avatar
Спасибо за ответ!

В старых сниппетах, если там в функциях объявлено global $modx, его не надо будет менять на новую функцию, чтобы работоспособность сохранить?
avatar
Нет. Ничего менять не нужно. Но в новых сниппетах рекомендуется отказаться от global
avatar
Работа выполнена огромная, верю в успешное развитие Evolution CMS)
Вопрос: планируется ли добавить поддержку BLADE из шаблонов в админке? Возможно это было бы удобно.
avatar
Да там есть пару идей как сделать что б интересно было и практично.
Там черер плагины решается просто. Сделаю:)
avatar
Обновил Updater в нем добавился параметр обновлять ли до нестабильных релизов или нет
по умолчанию предлагает обновить только до стабильной версии.

avatar
Отлично, спасибо!
avatar
Спасибо за огромный труд!
Есть только вопрос. Установить пакет тестовый, в полном соответствии с приведенным в статье. Но в результате выдает ошибку:

Fatal error: Uncaught Error: Class 'EvolutionCMS\Custom\ExampleServiceProvider' not found in G:\OSPanel\domains\modx2\core\src\ProviderRepository.php:182 Stack trace: #0 G:\OSPanel\domains\modx2\core\src\ProviderRepository.php(127): EvolutionCMS\ProviderRepository->createProvider('EvolutionCMS\\Cu...') #1 G:\OSPanel\domains\modx2\core\src\ProviderRepository.php(54): EvolutionCMS\ProviderRepository->compileManifest(Array) #2 G:\OSPanel\domains\modx2\core\src\AbstractLaravel.php(283): EvolutionCMS\ProviderRepository->load(Array) #3 G:\OSPanel\domains\modx2\core\src\AbstractLaravel.php(166): EvolutionCMS\AbstractLaravel->registerConfiguredProviders() #4 G:\OSPanel\domains\modx2\core\src\Core.php(181): EvolutionCMS\AbstractLaravel->__construct() #5 G:\OSPanel\domains\modx2\core\src\Core.php(213): EvolutionCMS\Core->__construct() #6 G:\OSPanel\domains\modx2\core\functions\preload.php(20): EvolutionCMS\Core::getInstance() #7 G:\OSPanel\domains\modx2\index.php(97): evolutionCMS() #8 {main} thrown in G:\OSPanel\domains\modx2\core\src\ProviderRepository.php on line 182


Вероятно, это я что-то не доделал. Но не пойму, почему не сработало. Что-то нужно доустановить?
avatar
Я думаю что такое движение в любом случае позитивное!
Вообще хочу пожаловаться на EVO!!! Уже около 3х (а то и больше) лет клипаю «сайтики» на EVO и по сути как программист вообще не развиваюсь! Есть конечно, свои наработки по не стандартным компонентам/модулям под конкретные проекты, но обычно хватает и стандартных сниппетов.
А тут действительно качественный фреймворк «Ларавель» и дейстсвительно большое сообщество… Но всё же до конца не понятно как это будет вместе работать? Смесь бульдога с носорогом. Если всё будет строиться на принципах Ларавель, зачем тогда EVO тут? Только в плане оформления админки (читай принципов работы в админке)? Не знаю что получится)
avatar
зачем cms если есть фреймворк? )
вот если бы развивались как программист, то таких вопросов бы не задавали )
попробуйте для начала собрать аналогичный «сайтик» на ларавел. независимо от результата вы получите ответ на свой вопрос.
avatar
Зачем вы тут?
попробуйте для начала собрать аналогичный «сайтик» на ларавел.
Вы пробовали? Велосипедист)
Ладно, хотелось бы более содержательный ответ, спасибо.
avatar
avatar
Спасибо большое.
Опыт программирования более 8 лет. Начинал ещё с Zend фреймворка (тогда он был едва ли не единственным). Отличия знаю…
avatar
CMS оптимальна для мелких и средних проектов, так как в пару кликов получаешь стандартную админку + стандартный функционал. Тоесть это позволяет существенно снизить затраты на разработку сайта.

А если брать Фреймворк то перед тем как собрать сайт нужно сначала собрать Админку + спроектировать базу данных и т д. Тоесть как минимум нужно обладать большими навыками + понимать что и зачем делаешь. Так же на это уходит больше ресурсов. В итоге использовать Фреймворки на мелких и средних проектах просто не рационально.

Единственный профит это наработка опыта за счет финансирования со стороны клиента. Но я бы на месте клиента подумал нужно ли мне такое.
avatar
По части развития вам никто не мешает развиваться:) Наоборот сейчас с учетом того что в ЕВО привносим принципы с ларавел это даст возможность вырости и после работать не только с EVO.

Во всех проектах мы используем основные 2 вещи:
1. Работа с базой данных
2. Шаблонизатор

И вот если раньше и 1 и 2 в EVO было уникальнымб эти знания нигде кроме EVO не пригодятся больше
то сейчас изучая Eloquent и Blade прокачиваешь навыки которые пригодятся и в других проектах :)

Опять же если рассмотреть Blade по ближе то мы увидим что он очень схож с TWIG и FENOM (Циклы, Условия, Наследования). А это еще больше дает возможности развиваться и расти вам как разработчику.
avatar
Спасибо. Основной вопрос был:
Если всё будет строиться на принципах Ларавель, зачем тогда EVO тут? Только в плане оформления админки (читай принципов работы в админке)?
Т.е. я так понимаю что работа будет вестись по переходу на ядро Laravel — там же по сути весь набор библиотек есть свой и по сути на нём огромное количество CMS.
Да и на сколько я знаю Eloquent и Blade используются только в Laravel))) (могу ошибаться)
avatar
Так уже перенесли что надо осталось навести порядки :)
github.com/evolution-cms/evolution/blob/2.x/core/composer.json#L44-L70

А EVO тут затем что удобная Админка :) А если переписать на базе Laravel целиком то не будет обратной совместимости и еще кучи плюшек

поэтому идем по пути еволюционирования когда плавно развиваемся и поддерживаем старое:) А не так что все выкинуть и начать с нуля:)
Такой опыт есть у MODX с РЕВО и надо делать выводы а не наступать на теже грабли
avatar
Всё хотел услышать! Спасибо!) Будем тестировать
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.