Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #5
24 сентября 2019, 20:01
+1
Ну если ничего не делать, то так и случится. Упорство Дмитрия должно послужить положительным примером.
24 сентября 2019, 19:57
-1
Я бы на это сильно не рассчитывал. Узкое место MODX совсем не в загрузке классов.
20 сентября 2019, 13:25
+9
Ненавижу такие комментарии.
20 сентября 2019, 10:20
0
А под своими процессорами ты имеешь ввиду свои, но наследники modProcessor, или вообще свой механизм?
Просто ты ответил немного неопределённо —
Только 3й вариант, только свои процессоры.
То ли за третий, то ли за второй.

П.С. Надо было сделать четыре комментария с каждым вариантом и за них голосовать. Эмулировать опрос. Стормозил чутка.
20 сентября 2019, 09:44
+1
Я тоже склоняюсь за третий вариант.
20 сентября 2019, 09:44
0
Боюсь большой объем работы просто застопорит все.
Это да. Особенно когда свободного времени мало. Но я вижу причины для чего так срочно нужно выпустить решение с костылями. В крайнем, лучше сделать копи/паст по всем правилам современной разработки.
20 сентября 2019, 08:29
0
Думаю, это не очень правильный подход. Или одно или другое.
20 сентября 2019, 06:37
+1
Потому что ты запрашиваешь объекты. И тебе выводятся поля из объекта.

Для понимания. Если ты создашь новый пустой объект и выведешь его
$resource = new modResource(...);
$resource->toArray();
то тоже получишь все поля, но пустые.

В твоём случае, ты инициализируешь указанные в select поля объектов данными из базы. Остальные поля — так называемые lazy. Они инициализируются из кэша. Если кэша нет, то делается запрос в базу и сохраняется в кэш.
Если нужно получить массив данных (что предпочтительней), то лучше делать так
$resources = [];
if ($c->prepare() && $c->stmt->execute()) {
    $resources = $c->stmt->fetchAll(PDO::FETCH_ASSOC);
}
foreach($resources as $resource){
    echo "<pre>".print_r($resource, true)."</pre>";
}
В этом случае получишь то, что запрашивал. И памяти меньше кушает.
19 сентября 2019, 12:33
0
А Slim рекомендует так
location ~ ^/api/ {
        try_files $uri /api/index.php$is_args$args;
    }
Какое решение лучше?
19 сентября 2019, 09:52
0
Про права я писал тут. Насчёт вызова событий нужно подумать. Это зависит от реализации.
19 сентября 2019, 09:43
+6
Выскажу здесь своё никому не нужное мнение.

Интересная статья для размышления. Не хватает четвертого варианта, который описал Василий выше и который использую я при разработке RESTful API дополнения.
Первые два варианта из разряда «забить гвоздь телефоном». Результат маленький и большие накладные расходы.
Третий вариант — это взять маленький молоточек. Чтобы забить средние и большие гвозди придётся сильно попотеть.

Цикл статей, имхо, нужен только для понимания, что встроенные средства MODX мало пригодны. Только для исключительно простых целей. Как по мне, даже JSON:API спецификация с его include, fields, filter и sort неудобна. Мне как разработчику было бы проще послать POST запрос, в котором описать как положено select, where, limit и т.п. Да, это уже не REST, но возможностей гораздо больше.
17 сентября 2019, 20:36
+3
Во-первых, это не готовое API, а инструкция по его созданию.
Во-вторых, про это уже говорили. Данное решение изучалось. Оно оказалось крайне ограниченное. Ничего кроме items/15 вы не получите.Т.е. статью с комментариями одним запросом никак не получить. И поля никак не указать. Так что на этом серьезное API не сделаешь.
В-третьих, сам Джейсон недавно в обсуждениях на Github писал, что делает API через Slim. Т.е. даже сам сапожник не носит свои сапоги.
В-четвертых, задача попробовать минимизировать зависимость от core-разработчиков.
И в-пятых, третья версия MODX планировалась на Slim 3. Возможно наше решение даст толчок для реализации этих планов.

Так что всё пока логично. А вас, товарищ, мы из групповухи вычеркиваем.)
17 сентября 2019, 19:10
+1
которое, в принципе уже и так есть
API в студию!
17 сентября 2019, 15:11
+7
Заметка о ходе разработки API. Также добавил в статью ссылку на демку.

П.С. Какие-то странности с уровнем комментариев. Писал в корень — показывает 3 точки, хотя ссылки на parent нет.
29 августа 2019, 06:39
0
AjaxForm ничего не отправляет. Это обёртка над FormIt. Там и правьте. Хук Email.
26 августа 2019, 12:37
+1
Интересно, Цукерберг уже в курсе? )

Лично я для старта выбрал Swagger, т.е. OpenAPI спецификацию. Она более читабельна, чем JSON-API.