Дмитрий
Дмитрий
Только там в моем случае, параметры страницы админки. Еще раз, компонент. В административной части у нгего нужно получать эти параметры для введенного пользователем адреса страницы фронта. Если в этом случае пользоваться Factory::getAppliction()->input, то получим параметры текущей страницы административной части компонента. Почему я и начал изврат с роутером, чтоб получить JApplication для фронта (site), а не для админки (Administrator)
Дмитрий
вы jsом пытаетесь в браузере распарсить текущую адрес админки?
Нет. Мне надо распарсить на бстранице админки адрес страницы фронтальной части сайта.
Дмитрий
посмотрите как работает в джумле распарсинг
Дмитрий
Route::parse()
Дмитрий
чето такое там лежит
Дмитрий
надо в сорцы идти
Дмитрий
Юзер при настройке компонента в АДМИНКЕ вводит адрес страницы из фронта и этот адрес надо распарсить.
Дмитрий
надо в сорцы идти
Вот я пошел и в результате параметры получил ,но не те. Страница товара VIRTUEMART? а парситься как com_content и features :)/ Почему и вынес сюда вопрос.
Дмитрий
Может кто сталкивался с подобным...
Дмитрий
$router->parse($uri) public static function getRouter($name = null, array $options = array()) { if (!isset($name)) { $app = \JFactory::getApplication(); $name = $app->getName(); } $options['mode'] = \JFactory::getConfig()->get('sef'); try { $router = \JRouter::getInstance($name, $options); } catch (\Exception $e) { return; } return $router; }
Дмитрий
@SDima06 ну вот
Дмитрий
метод из CMSApplication
Дмитрий
нужно вызвать роутер инстанцировать от application
Дмитрий
$router = \JRouter::getInstance('site'); $result = $router->parse('url')
Дмитрий
namespace JRouter нормальный подкажет шторм
Дмитрий
Попробую, спасибо.
Дмитрий
Тоже самое... Так же определяет com_content и featured для любых компонентов из фронта. Приходится еще добавлять перед инициализацией роутера $app = CMSApplication::getInstance('site'); $app->loadLanguage(); Иначе ругается, что не загружены языки
Igor
Тоже самое... Так же определяет com_content и featured для любых компонентов из фронта. Приходится еще добавлять перед инициализацией роутера $app = CMSApplication::getInstance('site'); $app->loadLanguage(); Иначе ругается, что не загружены языки
У вас пляска с тем что вы в админке пытается иницилизровать фронт. Это конечно возможно но куча головника. В случае с parse проще отправить ajax запрос на фронт.
Дмитрий
Ну да
Попробую...
Igor
Попробую...
Кстати вопрос, что вы хотите сделать я понял. Но мне теперь интрестно зачем
Дмитрий
Кстати вопрос, что вы хотите сделать я понял. Но мне теперь интрестно зачем
Делаю компонент оптимизации загрузки страниц. Оптимизация проводится в разрезе компонент-представление. Для каждого такого разреза есть набор параметров. Предзаполнить эти параметры и планирую таким образом. Т.е. вводится адрес тестовой страницы и по нему заполняется набор параметров, которые пользователь уже редактирует...
Дмитрий
Да все сделано уже ,осталось получить 2 параметра компонент и представление страницы и тут затык на ровном месте :)
Igor
Да все сделано уже ,осталось получить 2 параметра компонент и представление страницы и тут затык на ровном месте :)
Ну там еще не только view но и tmpl и язык и другие парамерты. в общем в ссылки куча всего хранится.
Igor
К примеру одна и та же категория com_content может иметь разные адреса в зависимости от макета
Дмитрий
Это понятно, скорее всего буду расширять "идентификацию". Пока так...
Дмитрий
У вас пляска с тем что вы в админке пытается иницилизровать фронт. Это конечно возможно но куча головника. В случае с parse проще отправить ajax запрос на фронт.
Так параметры получил, но не проходит проверка токена безопасности x-csrf-token при обработке запроса в контроллере во фронте.
Дмитрий
Во фронте и в админке они разные в результате. Надо что-то другое похоже выдумывать.
Дмитрий
Есть общие сессии
через пользовательские состояния?
Vladimir
через пользовательские состояния?
В настройках джумла есть общие сессии
Дмитрий
Понял, мне кажется, что это не лучшее решение в плане универсальности 🤔
Igor
Понял, мне кажется, что это не лучшее решение в плане универсальности 🤔
Просто сделай генерируемый ключ в адмиинке и все.
Igor
Без него его знания запрос выполнятся не будет. Да и вообще если честно csrf для распрасинга ссылок не нужно. Тут даже сложно предстваить вектор атаки. разве что ddos но тут ставится уже серверная защита
Дмитрий
@Septdir +
Sergey
@Septdir +
Тут так не работает)
Sergey
Тут нет Ванги
Дмитрий
Тогда просто спасибо 😀
RINAT
Серия статей по созданию своего SMS-шлюза на PHP от компании RUVDS https://habr.com/ru/company/ruvds/blog/554868/ - часть 1 https://habr.com/ru/company/ruvds/blog/555422/ - часть 2
Vladimir
Надо запомнить. Давно меня такая мысль гложет
Dmitry
Ищем специалистов?😑
Vladimir
Dmitry
Да думал, может что ответит
Vladimir
Да думал, может что ответит
Да там достаточно описание прочитать.
Sergey
Joomla-дайджест за 2-й квартал 2022 года Что в этом дайджесте? 1 млн уников в сутки на сайте-новостнике на Joomla, немного статистики, маркетинговых исследований, обзоры, электронная коммерция. 46 (+66) расширений Joomla, 8 ресурсов для разработки, Joomla 4 REST API и мобильные приложения, 8 статей и переводов, события из жизни Joomla-сообщества. Читать дайджест на Хабре
Rufina
Всем привет. Пожалуйста, помогите мне. Я собираюсь написать скрипт, как приложение CLI, который будет запускаться через крон. Я создаю файл по аналогии с cli/joomla.php, файл называется productLoader.php. Сейчас я нахожусь на стадии, чтобы просто проверить запуск этого файла через консоль и получаю ошибку http://joxi.ru/ZrJqdjzUMkgjoA А это фрагмент кода, где происходит ошибка http://joxi.ru/GrqevBjikbOPLr🙏
Rufina
J4.1.5
Rufina
а что я должна подключить в USE??
Sergey
@Septdir @tsymbalmitia
Sergey
Сейчас подскажут.
Vladimir
а что я должна подключить в USE??
Вам нужно использовать phpstorm - он автоматом включит нужные namespace
Vladimir
Но вообще вы пишете код с использованием ООП и спрашиваете что писать в use…
Vladimir
Возьмите любой файл как образец - посмотрите что там
Sergey
И он не презентабелен в данном случае.
Sergey
Так как команды, функции лежат в другом месте, а не в этом файле
Rufina
ведь там ошибка, что класс CliApplication не из того неймспейса подключен... А из какого??
Sergey
ведь там ошибка, что класс CliApplication не из того неймспейса подключен... А из какого??
Прочтите тут. И в целом по журналу поищете по CLI. Я так понимаю, что в четверке joomla.php - это точка входа, а команды расширяются плагинами.
Sergey
Rufina
я прочитала эти материалы https://docs.joomla.org/J4.x:Writing_A_CLI_Application https://docs.joomla.org/J4.x:CLI_example_-_Onoffbydate#The_Command_Line Там описывается создание новых команд и запуск их плагинами Но я не поняла, если я просто хочу запустить php скрипт из консоли, зачем я буду создавать некие новые команды? без плагина нельзя?
Sergey
Да, верно. Одна точка входа и добавление команд с помощью системного плагина. Не надо файлы штамповать.
Rufina
да
Sergey
да
В таком случае Вам надо подключать апи Joomla. В тройке да, копировали файлы-примеры и делали по своему. А в четверке это перенесли в плагины.
Rufina
вот так подключить? require_once(__DIR__ .'/api/index.php');
Sergey
Поройтесь в libraries/src/Console
Sergey
А подключение брать из joomla.php.
Sergey
Но зачем, если точка входа должна быть одна
Sergey
Ведь Вы можете свои CLI повесить на крон с помощью Task Scheduler из админки