ВитОс
С нами с 03 июня 2022; Место в рейтинге пользователей: #56Обновление PdoPage
            Ранее описал как убрать зависимость от jQuery в PdoPage
Затем залез в issues и увидел там давольно интересное предложение от @Руслан Алеев и описание ошибок с которыми тоже сталкивался не раз
Самая бесячая для меня
PHP warning: Undefined variable $showLog
решение которой начинается сразу после установки
Поэтому решил немного исправить ошибки и добавить новые фишки
Скажу сразу что я не гуру кода, часть делал через нейронку
Тестил на php начиная с 7.4 до 8.4
MODX 3.1.2
        
        
        
        
    Затем залез в issues и увидел там давольно интересное предложение от @Руслан Алеев и описание ошибок с которыми тоже сталкивался не раз
Самая бесячая для меня
PHP warning: Undefined variable $showLog
решение которой начинается сразу после установки
Поэтому решил немного исправить ошибки и добавить новые фишки
Скажу сразу что я не гуру кода, часть делал через нейронку
Тестил на php начиная с 7.4 до 8.4
MODX 3.1.2
PdoPage без jQuery
            Давно делал костылями пагинацию без jQuery
недавно дошли руки поковырять PdoPage
Скажу сразу в скрипте могут быть баги
У меня с ресурсами работает отлично
        
        
        
        
    недавно дошли руки поковырять PdoPage
Скажу сразу в скрипте могут быть баги
У меня с ресурсами работает отлично
Вопрос про PreHooks и checkbox
            простая задача, но чего то не получается цо всем, подскажите что не так
в formIt установил preHooks
В чем проблема?
        
        
        
    в formIt установил preHooks
$hook->setValue('color',json_encode(array('blue','red','green')));
return true;и вот так вывожу<label>Color /[[!+fi.color]]</label>
<input type="checkbox" name="color[]" value="blue" [[!+fi.color:FormItIsChecked=`blue`]] > blue
<input type="checkbox" name="color[]" value="red" [[!+fi.color:FormItIsChecked=`red`]] > red
<input type="checkbox" name="color[]" value="green" [[!+fi.color:FormItIsChecked=`green`]] > greenв fi.color выводится ["blue","red","green"]но вот почему то checkbox не выделяютсяВ чем проблема?
pdoResources не выводит ресурсы с указанным шаблоном
            есть много контекстов, нужно вывести все ресурсы у которых шаблон (4)
эти ресурсы есть у всех контекстов кроме 'web, sub'
[[pdoResources?
&parents=`0`
&template=`4`
&tpl=``
]]
Подскажите ка это сделать?
        
        
        
    эти ресурсы есть у всех контекстов кроме 'web, sub'
[[pdoResources?
&parents=`0`
&template=`4`
&tpl=``
]]
Подскажите ка это сделать?
migxLoopCollection Joins
            Есть такой код
Делал так
        
        
        
    [[!migxLoopCollection?
    &classname=`MaterialSubcategories\Model\subcategories`
    &where=`{"id":"[[+subcategory_id]]"}`    
    &tpl=`@CODE: [[+title]]/[[+category_id]]`
]]как сделать joins по classname MaterialCategories\Model\categories в котором id=[[+category_id]], нужно отобразить поле nameДелал так
[[!migxLoopCollection?
    &classname=MaterialSubcategories\Model\subcategories
    &where={"id":"[[+subcategory_id]]"}
    &joins=`{"MaterialCategories\Model\categories":{"alias":"Categories","on":"Categories.id = MaterialSubcategories\Model\subcategories.category_id"}}`
    &tpl=@CODE: [[+title]]/[[+category_id]] - [[+Categories.name]]
]]но не получилось, буду благодарен за любую помощь        Свой сниппет в FetchIt
            Задача после отправки формы в [[+result]] вывести ответ
помогите пожалуйста
        
        
        
    [[!FetchIt?
  &snippet=`MySnippet`
  &form=`tpl.FetchIt.example`
]]
[[+result]]сниппет MySnippetif (empty($_POST['date_men'])) {
    return $FetchIt->error('Ошибки в форме', [
        'date_men' => 'Вы не заполнили имя'
    ]);
} else {
  return $FetchIt->success('Форма прошла проверку',[
        'result' => 'Отправлено'
    ]);
}не передается result. помогите пожалуйста
modRest не выводит результат
            Вот это выводит результат '{«success»:true,«data»: ...' 
Подскажите в чрм может быть ошибка, в ошибках пусто
        
        
        
    $ch = curl_init('https://api.site');
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: OAuth НАШ TOKEN'
    ]
]);
$html = curl_exec($ch);
curl_close($ch);
echo $htmlа есть делаю с помощью modRest$url = 'https://api.site';
$headers=  array(
    'Content-type' => 'application/json', 
    'Authorization' => 'OAuth НАШ TOKEN' 
);
$client = $modx->getService('rest', 'rest.modRest');
$response = $client->get($url, array(), $headers);
$data = $response->process(); 
$jsonData = json_encode($data);
echo $jsonData;показывает такое '[]'Подскажите в чрм может быть ошибка, в ошибках пусто
Задваиваются письма
            При регистрации пользователя через LOGIN подключил сниппет '&postHooks=`email_reg_user`'
Как сделать так чтобы второе не уходило админу
        
        
        
    <?php
$email = $hook->getValue('email');
$username = $hook->getValue('username');
$password = $hook->getValue('password');
$fullname = $hook->getValue('fullname');
$phone = $hook->getValue('phone');
//отправляем админу
$message_admin = $modx->getChunk('adminEmailTemplate_reg',array(
   'email' => $email,
   'fullname' => $fullname,
   'username' => $username,
   'phone' => $phone
));
 
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message_admin);
$modx->mail->set(modMail::MAIL_FROM,'noreply@site.ru');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Сайт');
$modx->mail->set(modMail::MAIL_SUBJECT,'регистрация участника');
$modx->mail->address('to', 'admin@site.ru');//$modx->getOption('emailsender'));
$modx->mail->setHTML(true);
$modx->mail->send();
//отправляем пользователю
$message = $modx->getChunk('myEmailTemplate_reg',array(
   'email' => $email,
   'fullname' => $fullname,
   'username' => $username,
   'password' => $password,
   'phone' => $phone
));
 
//$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'noreply@site.ru');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Сайт');
$modx->mail->set(modMail::MAIL_SUBJECT,'регистрация');
$modx->mail->address('to', $email);
$modx->mail->setHTML(true);
$modx->mail->send();проблема в том что на почту (администартора) admin@site.ru приходит два письма adminEmailTemplate_reg и myEmailTemplate_regКак сделать так чтобы второе не уходило админу
getObject Рандом
            как сделать так чтобы $object_id брался рандомно, но при этом у него должно быть status=1 и moderation=1
        
        
        
    $res = $modx->getObject('CheckItem',$object_id);
$res->set('luck', '4');
$res->save()        Не добавляется запись в MIGX
            Стоит modx 2.7.3
создал как обычно в Package Manager
имя Check
префикс default
схема
настроил все через CMP (могу добавлять и редактировать)
Создаю сниппет
в логах
(ERROR @ /core/xpdo/xpdo.class.php: 644) Could not load class: CheckItem from mysql.checkitem.
как исправить или куда копать?
        
        
        
    создал как обычно в Package Manager
имя Check
префикс default
схема
<?xml version="1.0" encoding="UTF-8"?>
<model package="Check" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" phpdoc-package="" phpdoc-subpackage="" version="1.1">
    <object class="CheckItem" table="check_item" extends="xPDOSimpleObject">
        <field key="title" dbtype="varchar" phptype="string" precision="100" null="false" default="" index="index"/>
        <field key="description" dbtype="text" phptype="string" null="false" default="" />        
    </object>
</model>таблица создалась настроил все через CMP (могу добавлять и редактировать)
Создаю сниппет
<?php
$modx->addPackage('check', MODX_BASE_PATH . 'core/components/check/model/', 'modx_');
$check = $modx->newObject('CheckItem');
$check->set('title', '11111');
$check->set('description', '22222');
$check->save();
return true;В итоге 500 ошибка у не чего не добавляетсяв логах
(ERROR @ /core/xpdo/xpdo.class.php: 644) Could not load class: CheckItem from mysql.checkitem.
как исправить или куда копать?