Воеводский Михаил

Воеводский Михаил

Был в сети 30 марта 2026, 14:44
Заказы не принимаю
Если в Laravel все стандартизировано — хорошо.
Иначе он работать не будет. Как и любой другой фреймворк.


Имел ввиду другое — нет ли в нем ситуации, когда для пользователей, к примеру, несколько разных модулей с не полностью совместимыми между собой реализациями, а совсем другие модули работают только с какой-то определенной реализацией пользователей?

Самый простой пример в MODX — minishop2 с его кучей дополнений и Shopkeeper, под который тоже, вроде, можно что-то делать, но фактически очень мало что есть.
Прекрасно понимаю все то, о чем говоришь.
Но речь в комментарии Павла была о том, что в MODX это все есть «из коробки» и все дополнительные модули работают именно с этими системными объектами, а не дополнительно поставленными.

Если в Laravel все стандартизировано — хорошо. В этом я могу ошибаться, ибо не погружался.
$cat = $modx->newObject('msCategoryOption');
$cat->fromArray(array(
    'option_id' => 1, 
    'category_id' => 2, 
    'active' => 1, 
    'value' => ''), '', true);    

echo print_r($cat->toArray(), 1);
сам точно бы не догадался
Чтение исходников творит чудеса. Хотя помню, как с подобным пару суток просидел, пока докопался до сути.
1) В объекте msCategoryOption поля option_id и category_id вместе образуют первичный ключ
2) При передаче массива вnewObject() для выставления значений вызывается метод fromArray()
3) По умолчанию fromArray() имеет третий параметр $setPrimaryKeys= false, который блокирует высталение первичных ключей

Сопоставляя пункты между собой, получаем итог: в данном примере кода значение поля option_id остается умолчательным (0), а опции с ID = 0 не существует.

Надеюсь, такого объяснения достаточно, и не требуется приводить кусок кода с правильным заполнением полей.
Про избыточность функционала не соглашусь в том, что банально дешевле поставить ms2g, чем докручивать плагин.

По теме — смотрите исходники MODX в части установки пакетов. Деталей не подскажу, но там (отчасти) решен вопрос с обходом ограничения.