Fi1osof

Fi1osof

Был в сети 15 февраля 2026, 22:30
Заказы не принимаю
+1
Ну, из-за отдельных багов говорить, что все плохо сделано — это не совсем корректно. Это как лететь на самолете, и жаловаться на самолет только из-за того, что сеточка на переднем сидении порвалась. Нет крупных систем без багов.
0
Вот то, что GET — это бага по сути. Должно постом отправляться.
А на счет настройки сервера: не уверен, но судя по всему в настройках fastcgi надо еще править, а не нгинкс. То есть нгинкс уже согласен больше пропускать, но конечный обработчик не согласен.
0
Вот и я удивился. Хотя в ченджлоге первой строчкой идет мой багфикс. Его конечно чуть-чуть подправили, так как я не сильно заморачивался с оформлением кода, но в целом это все то, что я и написал. Ну чо, мотивация напирае. С таким отношением точно путь только к форку.
+1
Неверно выражаетесь. Что значит чуть-чуть? Было поле int(6), сделали int(7). Чуть-чуть? Да. Но все будет писаться как и раньше. А переименовали колонку «чуть-чуть», на один символ — это совсем не чуть-чуть, это дропнули старую и создали новую, о которой да, xPDO не будет ничего знать.
0
Аа, ну тогда это дело только в настройке вашего сервера. При чем судя по всему «414 Request-URI Too Large» это проблема не с ответом, а с запросом. Посмотрите, может он не POST, а GET, и там куча параметров в запросе. Увеличьте параметры веб-сервера, и все ОК должно стать. Это как с лимитами на размеры загружаемых файлов.
+3
Как вариант можно и vapor заюзать. Еще teleport есть или типа того. Для пакетов-сборок поднять репозиторий на базе modxRepository. Не долго там при желании прикрутить проверку оплаты, ключи и т.п. Это бы существенно облегчило процесс установки.
+2
А пользователи yui, laravel тоже в инклюдах прописывают return?
Я не специалист по ларке, но даже при быстром осмотре доки
встречается такое:
Откройте файл app/routes.php и добавьте этот код в его конец:
Route::get('users', function () {
return 'Users!';
});
Теперь если вы перейдёте в браузере на адрес .../users, то должны увидеть текст Users!
Самое важное: $output= $snippet->process($params);
Это как раз и не самое важное. Присвоение идет внутри process().
Вы не поняли. Без присвоения и возврата во внутренних вызовах, не будет возврата и во внешних. Вот смотрите, здесь выполняется присвоение и возврат, и здесь выполняется присвоение и возврат.
А то, как у вас сейчас сделано, просто не позволит мне выполнить что-то типа такого:
$result = include "path_to_snippet";
$result = some_method($result);
return $result;
Мне в таком случае опять-таки придется использовать костыль с обфлэшем.

Отличие лишь в том, что для return надо прописывать
$includeResult= include $this->_scriptFilename;
а для print нет
include $this->_scriptFilename;
Ничто вам не мешает писать print include $this->_scriptFilename;

Просто мне казалось, что для стороннего php программиста сниппет будет выглядеть привычнее с print. Он может написать любой сниппет для MODX менеджера, который сможет его подключить. Я так думаю. Я могу и ошибаться, ибо не профи в этом.
Куча принтов в сниппетах — это всегда было плохо. Пусть мне кучу минусов к коменту напихают несогласные. Сниппет — это логика. Она не должна ничего принтить. Принт — это вопрос шаблонизации, а это уже дело шаблонов и чанков. Но чанки опять-таки должны вызываться кодом-обработчиком.
+2
По поводу print vs return в корне не согласен.
+1

Тоже и по поводу return. Для php программиста привычнее и логичнее print. А для MODX-программиста — return. На самом деле ничего сложного поменять логику нет. Пара строчек кода. Вопрос именно в подходе — делать как в обычном php или как в MODX.
Сергей, вы здесь в корне не правы, сорри. Поясню. Просто проследите ход выполнения метода
MODx::runSnippet(). Самое важное: $output= $snippet->process($params); Уточняю: в данном случае выполняется присвоение. Вывод print/echo просто так присвоить нельзя. Для этого в modScript (расширяемый классом modSnippet) используется костыль ob_start()/ob_get_contents()/ob_end_clean(), и используется он как раз потому что многие именно MODX-разработчики вместо return пишут print/echo в своих сниппетах. Таким образом им просто облегчили жизнь. Но все-таки правильно именно возврат значения делать через return;
Еще аргумент: есть негласное правило у программистов: любая функция должна выполнять return, даже если она ничего не возвращает. Это как минимум для читабельности кода. Так вот, сейчас в modScript выполняется include кеш-файла сниппета, а вот еще каких-то пару лет назад код сниппета преобразовывался в функции и сниппет вызывался именно как функция. А еще раз повторюсь: функции должны выполнять возврат, а не принт.