Всего 123 791 комментарий

Константин Ильин
11 июня 2023, 01:23
+1
Интересный Вы Александр. Отвечу кратко:
Редактирование профиля пользователя, например поле fullname, пишешь «Александр Мельник 666», а после нажатия кнопки сохранить отобразится «Александр Мельник», defaul value.
ну и Артур про это же написал.
Роман
11 июня 2023, 00:04
0
что бы я не указал, не сохраняется значение в этом поле, пишу 536870911 сохраняю, редактирую снова и вижу что поле пустое
Денис Усманов
10 июня 2023, 22:56
0
Нужную длину записываемых данных
Денис Усманов
10 июня 2023, 22:51
0
В Длина/Значения укажите
Роман
10 июня 2023, 22:50
0
Спасибо, но все равно сохраняет обрезанным, а у типа TEXT есть ограничения по количеству?
Денис Усманов
10 июня 2023, 22:18
0
phpMyAdmin -> modx_site_tmplvar_contentvalues -> Структура -> value изменить
меняешь с MEDIUMTEXT на обычный TEXT

Артур Шевченко
10 июня 2023, 20:23
+2
Параметр этот был и в AjaxForm, только там он не работал. А действие вполне логичное в тех случаях, когда форма, которую нужно отправить, это форма с данными пользователя в его ЛК, согласись если ты, как пользователь, зайдёшь в ЛК, изменишь свой email, сохранишь и форма очиститься, ты сильно удивишься)))
Александр Мельник
10 июня 2023, 18:32
+1
Прямо и восхищение и удивление у меня возникло.
Удивление вызвал Константин, вот прям интересно стало, зачем может понадобиться не очищать форму, после того как она отправлена? Это вроде бы такое странное поведение, все равно что пригнать машину на мойку, но попросить оставить грязным две двери) Ну тоесть теоретически там может быть, но зачем.
Расскажите пожалуйста, Константин, побалуйте пожалуйста мое любопытство, для каких целей форма должна оставаться с отправленными данными…
Ну а восхищение вызвал Баха, которые несмотря на нелогичность этого действия, даже добавил в сниппет параметр, за это отвечающий.
Константин Ильин
09 июня 2023, 22:34
+1
Спасибо! Я в событиях js смотрел думал там, как же упрощает жизнь FetchIt, спасибо за шикарный компонент!
Баха Волков
09 июня 2023, 19:12
+1
При вызове сниппета тебе достаточно указать значение 0 параметру clearFieldsOnSuccess.

[[!FetchIt?
  ...
  &clearFieldsOnSuccess=`0`
]]

Подробнее о работе компонента можно узнать на сайте документации. А конкретнее на странице сниппета FetchIt, где и перечислены параметры с их описанием.
Константин Ильин
09 июня 2023, 17:47
0
@Баха Волков Подскажи пожалуйста, как отменить reset формы после отправки? чтоб поля не сбрасывались.
Артур Шевченко
09 июня 2023, 12:31
+1
Давно уже оформил. AjaxFormitLogin называется
Артур Шевченко
09 июня 2023, 11:50
0
getResources выводит список ресурсов, а не формирует ссылки на них. Как в чанке вы выводите ссылку? Так
<a href="[[+uri]]">link</a>
Vladislav
09 июня 2023, 10:30
0
Поразбирался немного, в результате:
$user = $this->modx->getObject($modtelegram->classModUser, $q);
вот эта команда в методе GetUserByEmailPassword из файла
core/components/modtelegram/model/modtelegram/modtelegram.class.php
должна возвращать объект $user, но возвращает null. Пользователь точно есть.
$q формируется как
$q = $this->modx->newQuery($modtelegram->classModUser);
    $q->innerJoin($modtelegram->classModUserProfile, $modtelegram->classModUserProfile,
        "{$modtelegram->classModUser}.id = {$modtelegram->classModUserProfile}.internalKey");
    $q->where(array(
        "{$modtelegram->classModUser}.active"       => true,
        "{$modtelegram->classModUserProfile}.email" => $email,
    ));
Пока не понятно куда копать дальше. В modx и php новичёк. Первый сайт на modx делаю.
Anton K
09 июня 2023, 00:05
0
Не думали оформить как отдельный компонент (и может даже в стор залить)? Было бы удобнее, работал бы не зависимо от оригинального ajaxform. Например, можно было бы использовать на новых страницах, не боясь поломать старый сайт (с кучей чужого кода), полезно при редизайне главной, например, чтоб бандл jquery не тащить ради него… но и старые шаблоны не трогать.

хотя есть FetchIt (вроде то, что нужно)
Александр Туниеков
08 июня 2023, 18:45
0
в migx при попытке содать таблицы в базе вылетает ошибка
Fatal error: Class 'xPDOGenerator_mysql' not found in C:\OSPanel\domains\modx3.loc\core\components\migx\model\migx\migxpackagemanager.class.php on line 3
Александр Туниеков
08 июня 2023, 18:38
0
Ага. А вот как мне быть? Мне нужно чтоб класс таблицы я мог указать прямо в параметрах сниппета. То есть имя класса в сниппете есть только в виде переменной строки.
$class = 'ModExtra\Model\ModExtraItem';
$class::class;
Так не работает. Конечно можно использовать eval
$class = 'ModExtra\Model\ModExtraItem';
eval('$class1 ='. $class.'::class;');
if($item = $modx->getObject($class1,1)){
    print_r($item->toArray());
}

Но eval как известно зло. Или Использовать $xpdo->loadClass Но его не изветно когда отрубят.
Так как быть?
Николай Савин
08 июня 2023, 18:23
0
Да loadClass до сих пор используется и очень активно прямо в ядре.
Александр Туниеков
08 июня 2023, 18:02
0
Так а что ты проверял? (в обществе вроде по правилам использовать ты)
Я проверяю
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$class = 'ModExtra\Model\ModExtraItem';
$class::class;
ошибка: Fatal error: Dynamic class names are not allowed in compile-time ::class fetch in

Работает такой код:
{'!pdoResources' | snippet : [
   'class'=>'ModExtra\Model\ModExtraItem',
   'sortby'=>[
       'ModExtraItem.id'=>'ASC'
   ]
]}
Это работает только не понятно будет ли дальше работать.
\core\components\pdotools\src\Fetch.php вызывает
\core\vendor\xpdo\xpdo\src\xPDO\Om\xPDOQuery.php
public function __construct(& $xpdo, $class, $criteria= null) {
        parent :: __construct($xpdo);
        if ($class= $this->xpdo->loadClass($class)) {
            $this->_class= $class;
            $this->_alias= $this->xpdo->getAlias($this->_class);
            $this->_tableClass = $this->xpdo->getTableClass($this->_class);
            $this->query['from']['tables'][0]= array (
                'table' => $this->xpdo->getTableName($this->_class),
                'alias' => & $this->_alias
            );
            if ($criteria !== null) {
                if (is_object($criteria)) {
                    $this->wrap($criteria);
                }
                else {
                    $this->where($criteria);
                }
            }
        }
    }
\core\vendor\xpdo\xpdo\src\xPDO\xPDO.php
/**
     * Load a class by fully qualified name.
     *
     * The $fqn should in the format:
     *
     *    dir_a.dir_b.dir_c.classname
     *
     * which will translate to:
     *
     *    XPDO_CORE_PATH/om/dir_a/dir_b/dir_c/dbtype/classname.class.php
     *
     * As of xPDO 3.0, the use of loadClass is only necessary to support BC
     * with older xPDO models. Auto-loading in models built with xPDO 3.0 or
     * later makes the use of this method obsolete.
     *
     * @param string $fqn The fully-qualified name of the class to load.
     * @param string $path An optional path to start the search from.
     * @param bool $ignorePkg True if currently loaded packages should be ignored.
     * @param bool $transient True if the class is not a persistent table class.
     *
     * @return string|boolean The actual classname if successful, or false if
     * not.
     * @deprecated since 3.0
     */
    public function loadClass($fqn, $path= '', $ignorePkg= false, $transient= false) {
loadClass вроде deprecated а закомментировал весь блок с if ($class= $this->xpdo->loadClass($class)) { сайт ушел в аут. Чет похоже разработчики MODX3 недодумали :-)