Fi1osof

Fi1osof

С нами с 05 мая 2014; Место в рейтинге пользователей: #10
Fi1osof
13 октября 2015, 21:21
+1
Ну, из-за отдельных багов говорить, что все плохо сделано — это не совсем корректно. Это как лететь на самолете, и жаловаться на самолет только из-за того, что сеточка на переднем сидении порвалась. Нет крупных систем без багов.
Fi1osof
12 октября 2015, 23:59
0
Так вот потому это и бага. Запрос должен отправляться постом, тогда бы и у вас не возникло проблем с этим. Потому что кому-то может понадобиться вообще все параметры выгрузить.

Не за что.
Fi1osof
12 октября 2015, 23:41
0
Вот то, что GET — это бага по сути. Должно постом отправляться.
А на счет настройки сервера: не уверен, но судя по всему в настройках fastcgi надо еще править, а не нгинкс. То есть нгинкс уже согласен больше пропускать, но конечный обработчик не согласен.
Fi1osof
12 октября 2015, 22:06
0
Вот и я удивился. Хотя в ченджлоге первой строчкой идет мой багфикс. Его конечно чуть-чуть подправили, так как я не сильно заморачивался с оформлением кода, но в целом это все то, что я и написал. Ну чо, мотивация напирае. С таким отношением точно путь только к форку.
Fi1osof
12 октября 2015, 21:57
+1
Неверно выражаетесь. Что значит чуть-чуть? Было поле int(6), сделали int(7). Чуть-чуть? Да. Но все будет писаться как и раньше. А переименовали колонку «чуть-чуть», на один символ — это совсем не чуть-чуть, это дропнули старую и создали новую, о которой да, xPDO не будет ничего знать.
Fi1osof
12 октября 2015, 21:48
0
Аа, ну тогда это дело только в настройке вашего сервера. При чем судя по всему «414 Request-URI Too Large» это проблема не с ответом, а с запросом. Посмотрите, может он не POST, а GET, и там куча параметров в запросе. Увеличьте параметры веб-сервера, и все ОК должно стать. Это как с лимитами на размеры загружаемых файлов.
Fi1osof
12 октября 2015, 18:13
+1
Обновитесь до 2.4.2. Удалите таблицу этого класса, и в консоли выполните
$modx->getManager()->createObjectContainer('modManagerLog'); В крайнем случае просто через phpMyAdmin удалите и создайте новую таблицу.
Fi1osof
11 октября 2015, 10:49
0
К слову, очень рад «видеть» себя в списке участников этой версии. modx.com/blog/2015/10/06/modx-revolution-2.4.2-bug-fixes-ui-improvements/
Fi1osof
08 октября 2015, 17:12
0
Значит всё ок
Ну, это еще не факт. При обновлении до 2.4.0-2.4.1 тоже MODX вряд ли выводил «Вам хана, все пропертисы затрутся!»)))
Fi1osof
08 октября 2015, 17:10
0
Это не ошибка, а просто информация. 00000 — это MySQL «нет ошибки». То есть таблицу обновить надо было, он обновил и без ошибок.
Fi1osof
08 октября 2015, 13:13
+1
Проверьте еще экспорт/импорт наборов параметров. Что-то некогда было погонять, но кто-то жаловался на фатальную ошибку.
Fi1osof
05 октября 2015, 15:21
+3
Как вариант можно и vapor заюзать. Еще teleport есть или типа того. Для пакетов-сборок поднять репозиторий на базе modxRepository. Не долго там при желании прикрутить проверку оплаты, ключи и т.п. Это бы существенно облегчило процесс установки.
Fi1osof
04 октября 2015, 13:42
0
Ясно. Мы просто видимо с разными девами общаемся)
Fi1osof
04 октября 2015, 13:40
0
Ну, это и есть костыль)
Fi1osof
04 октября 2015, 13:28
-1
Дайте ссылку, где они такое пишут. Не видел ни одного сниппета от MODX-девов, где выполнялся бы принт. Возьмите тот же Wayfinder. Выполняется return;
Fi1osof
04 октября 2015, 13:26
+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 менеджера, который сможет его подключить. Я так думаю. Я могу и ошибаться, ибо не профи в этом.
Куча принтов в сниппетах — это всегда было плохо. Пусть мне кучу минусов к коменту напихают несогласные. Сниппет — это логика. Она не должна ничего принтить. Принт — это вопрос шаблонизации, а это уже дело шаблонов и чанков. Но чанки опять-таки должны вызываться кодом-обработчиком.
Fi1osof
04 октября 2015, 12:38
+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 кеш-файла сниппета, а вот еще каких-то пару лет назад код сниппета преобразовывался в функции и сниппет вызывался именно как функция. А еще раз повторюсь: функции должны выполнять возврат, а не принт.