Сергей
Как в Evolution2 сделать точку входа для ajax запросов правильнее? Только без onPageNotFound. по мне это кривовато выглядит..
Сергей
Была мысль создать ресурс ajax с простым шаблоном @json($data) и разруливанием запросов в его контроллере.
Pathologic
контроллер и есть эта точка входа
Сергей
Контроллер привязан по названию к шаблону. Шаблон к ресурсу. Значит нужно создать отдельный ресурс с урлом например /ajax/ и слать запросы на него. Так?
Pathologic
так можно на текущую страницу же и слать
Сергей
а, ну да..
Сергей
Хотя нет.. Если например форма выводится на разных страницах с разными контроллерами, мне в каждом писать одинаковый обработчик. Или выносить в базовый контроллер обработку.. А если выносить в базовый, то нужно разруливать запросы от разных типов форм. как-то не айс. или не так страшно как кажется?
Сергей
А можно сделать роуты без создания документов дереве ресурсов, и без прослушивания pageNotFound? Это решит сразу две моих проблемы
Pathologic
ну сделай тогда файл ajax.php и там разруливай
Pathologic
а что там разруливать switch($_POST['formid'])
Pathologic
/** * @return string */ protected function ajax () { if ($this->getFormId() == 'login') { return $this->getLoginForm([ 'api' => 2, 'redirectTo' => 8 ]); } }
Volodymyr
но как по мне плагин не плохой вариант
Pathologic
а как по мне - плохой
Сергей
Вот мне тоже не нравится. 404 это все таки не для роутинга
Сергей
В идеале написать где-нибудь примерно такое $this->route('get', '/api/entries', MyController::getEntries)
Anonymous
Хочешь купить вещи в 2 раза дешевле чем в магазине и без кидалова на предоплату? Тогда тебе к нам, канал с расценками и товаром тут: https://t.me/joinchat/AAAAAEhjlbomgENouHbmKw 95567
Anonymous
Хочешь купить вещи в 2 раза дешевле чем в магазине и без кидалова на предоплату? Тогда тебе к нам, канал с расценками и товаром тут: https://t.me/joinchat/AAAAAEhjlbomgENouHbmKw 96840
Oleg
Добрый вечер. Про табы вопрос - у пользователя-менеджера нельзя, например, открыть для редактирования 2 страницы одновременно в табах. И настройки для запрета/разрешения этого тоже нет. Или я не нашел?
Dmytro
Как в Evolution2 сделать точку входа для ajax запросов правильнее? Только без onPageNotFound. по мне это кривовато выглядит..
В сервис провайдере можно ловить Пинганите завтра часов с 12 до 15 скину пример как
Oleg
две страницы одного документа или как? а так глобальние табы в настройках
Две страницы из дерева документов. Или два модуля. Или два чанка. Я для себя (максимальные права) глобальные табы вижу, то есть они работают. Делаю когда простого пользователя - у него не работает.
Dmytro
Две страницы из дерева документов. Или два модуля. Или два чанка. Я для себя (максимальные права) глобальные табы вижу, то есть они работают. Делаю когда простого пользователя - у него не работает.
Они помойму только для админа только не помню по умолчанию так или всегда, надо проверить в целом там просто сделать что б настройкой было
Oleg
Мне кажется только для админа. А то я уже все перепробовал.
Dmytro
Надо таску на гит сделаю там быстро главное не забыть/забить
Pathologic
в ларавеле можно роуты добавить в сервис-провайдере
Pathologic
только у нас же не ларавель ((:
Сергей
Дмитрий обещал показать в контексте evo ) подождем
Dmytro
if(isset($_GET['q'])) { $request['request'] = $_REQUEST; $q = $request['request']['q']; unset($request['request']['q']); $routes = [ 'test' => ['EvolutionCMS\Main\Controllers\ApiController', 'test'], 'test1' => ['EvolutionCMS\Main\Controllers\ApiController', 'test1'], 'test2' => ['EvolutionCMS\Main\Controllers\ApiController', 'test2'], ]; if (array_key_exists($q, $routes)) { call_user_func_array([new $routes[$q][0], $routes[$q][1]], $request); } }
Dmytro
вот так пишем в сервис провайдере и получаем нужные endpoint для api )
Pathologic
лажа какая-то
Dmytro
Почему ?
Dmytro
надо именно роуты а не endpoint используем: https://github.com/evolution-cms/example-package/blob/master/core/custom/packages/example/plugins/FastRoute.plugin.php его так же можно просто в сервис провайдере тогда он будет отрабатывать до того как отработает роутинг EVO
Pathologic
ну это еще лучше, опять OnPageNotFound
Dmytro
Отлично работают оба варианты хоть в сервис провайдере хоть через on404 для себя понял что если делаем не открытое апи то проще использовать просто andpoints нет смысла роуты разбирать
Pathologic
что работают это бесспорно
Dmytro
Ну а куда еще вклинить роуты? или до того как пройдемся по роутингу EVO и попадем на документ или после 🙂 других вариантов собственнно и нет
Dmytro
Можно сделать типа специально событие но чем оно поможет суть таже останеться
Pathologic
проще тогда запросы к апи на отдельный файл отправлять
Pathologic
а там уже хочешь разбирай руками, хочешь подключай роутер
Dmytro
зачем плодить еще 1 файлик ? просто ради чего ?
Pathologic
так в твоих способах тоже нужно плодить 1 файлик
Dmytro
Можем сделать событие evoCustomRouting )
Dmytro
будет такое же как pageNotFound только называться по другому ))))
Pathologic
да, поэтому смысла нет
Сергей
Я правильно понял, что если запихнуть fastrouter в сервис провайдер, то сначала он сработает, и только если он не найдет роуты, то отработает роутинг evo?
Сергей
Ну этот вариант выглядит более менеее прилично на первый взгляд. Протестим.
Pathologic
в последнем примере как раз сначала отработает роутинг ево
Dmytro
Напомнить?
Лучше таску создать
Dmytro
Я после НГ займусь как раз до 8 гуляем 🙂 будет время )
Dmytro
Ну этот вариант выглядит более менеее прилично на первый взгляд. Протестим.
Вообще надо сделать пакет типа evocms-customRouting ) и через него красиво все разруливать тогда будет понятно и можно будет использовать единообразно всем
Сергей
Еще вопрос. Даже не вопрос, а скорее уточнение. Я так понимаю, нельзя одним запросом дернуть документ и все его значения TV (учитывая дефолт)?
Pathologic
нельзя
Сергей
А так? SELECT `evo2_site_content`.`id`, `evo2_site_content`.`pagetitle`, `evo2_td`.`name`, `evo2_tv`.`value` FROM `evo2_site_content` LEFT JOIN `evo2_site_tmplvar_contentvalues` as `evo2_tv` on `evo2_tv`.`contentid` = `evo2_site_content`.`id` LEFT JOIN `evo2_site_tmplvars` as `evo2_td` on `evo2_td`.`id` = `evo2_tv`.`tmplvarid` WHERE `evo2_site_content`.`parent` in (2500, 2543, 2548) and `evo2_tv`.`tmplvarid` in (58, 50, 47, 59, 54, 57, 56) and `evo2_site_content`.`deleted` = 0 and `evo2_site_content`.`published` = 1 Вроде дергаются, Но нужно потом дополнительно коллекцию обрабатывать, приводить к двумерной таблице
Am
Добрый вечер. Снова с просьбой о помощи. Не могу создать пакет уже на другом хостинге: https://www.ukraine.com.ua/ До этого пробовал на Beget. Устанавливаю CMS двумя командами: $ composer create-project evolutioncms/evolution:2.0.1 . $ php install/cli-install.php --database_server=xxxx.mysql.tools --database=xxxx_db --database_user=xxxx_db --database_password=XXXX --table_prefix=xxxx_ --cmsadmin=xxxx --cmsadminemail=admin@mail.com --cmspassword=XXXX --language=ru --mode=new --installData=n --removeInstall=y Всё проходит на ура. Потом: php artisan Тоже выводит список команд как и должно быть. А вот вывод команды: $ /usr/local/php72/bin/php -d memory_limit=-1 artisan package:create На картинке ниже:
На Бегете у меня получилось без ошибок запустить package:create из core указав явно версию php используемую для сайта и выставив безлимитное использование памяти. Т.е. после того как заходим в core запускаем php7.2 -d memory_limit=-1 artisan package:create php7.2 моя версия PHP используемая на этом сайте. Еще так же работает обновление composer'a, только там через дефис composer-php7.2 Т.к. artisan запускается как #!/usr/bin/env php то на сервере из консоли идет базовая версия php 5.6.38 , а в обязательных требованиях composer'е прописано "php": ">=7.2", Такая работа artisan
Aliaksandr
Здесь частный случай.
В чем он частный, в том, чтобы замедлить сайт раз в надцать? Тогда ок, доклистер тоже сначала все джойнил :)
Pathologic
ну для частного случая с одним тв может и нормально (:
Сергей
ну для частного случая с одним тв может и нормально (:
7 TV, ~100 позиций. и вряд ли их будет больше пары сотен
Aliaksandr
Кстати, можно ли как-то ускорить запрос вида select .. where id in (тысяч десять айдишников) … , а то он под секунду исполняется бывает
Aliaksandr
id из site_content
Pathologic
посмотри explain
Pathologic
и что ты выбираешь
Владимир
Ребят подскажите а как подружить шопкипер с formlister? Раньше всегда eform было с: &eFormOnBeforeMailSent=`populateOrderData` &eFormOnMailSent=`sendOrderToManager` а тут поменял на &prepareProcess=`populateOrderData` &prepareAfterProcess=`sendOrderToManager` И форма не отправляет ничего