Дмитрий
а, это вообще рандомный запрос
Dmitry
Не будет state
Ruslan
Надо код смотреть :)
Вот код модели flat.php
Дмитрий
ну ты же получил запись, ну дальше переменная и свойство id
Дмитрий
$row = $db->setQuery($query)->loadObject(); $row->id
Ruslan
Вот код модели flat.php
Типичных ошибок при обновлении компонентов там не вижу, компонент работал на Joomla 3.10 корректно 😔
Dmitry
if (!is_array($data->service)) { $data->service = explode(',', $data->service); }
Dmitry
А если data не объект?)
Ruslan
if (!is_array($data->service)) { $data->service = explode(',', $data->service); }
Спасибо, сейчас переделаю, и протестирую, старнно, но из стактрейса джумла жалуеться на 10 строку.
Dmitry
Думаю, что происходит ошибка при сохранении, потом вызывается форма и попытка замапить пустые данные на форму. А так как item пустой, возникает фатал при попытке назначения свойству service массива.
Dmitry
Когда это починишь, останется понять, почему сохранение падает
Dmitry
Но там тоже какое-то значение в базу некорректно приходит.
Dmitry
Данные обычно из базы
Dmitry
А если в базе ничего нет, то item будет null
Ruslan
А если в базе ничего нет, то item будет null
Если они отображаться в редакторе в админке, они же забираються из бд корректно? Но, при сохранении их уже нету.
Dmitry
Если они отображаться в редакторе в админке, они же забираються из бд корректно? Но, при сохранении их уже нету.
Ну значит при сохранении ошибка происходит раньше, чем из базы данные прилетают
Dmitry
В итоге пустой item
Dmitry
Это теория ))
Ruslan
Вот например данные в админке для flat-a, Подскажите где искать код сохранения, в котроллере?
Dmitry
Это теория ))
// Convert to the CMSObject before adding other data. $properties = $table->getProperties(1); $item = ArrayHelper::toObject($properties, CMSObject::class);
Dmitry
Потому что в модели ничего нет, значит стандартно сохраняет
Dmitry
Возможно в контроллере что-то обрабатывается
Ruslan
У меня есть такой код в вью для сабмита формы сохранения <script type="text/javascript"> Joomla.submitbutton = function(task) { if (task == 'flat.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { Joomla.submitform(task, document.getElementById('item-form')); } }; </script>
Dmitry
Вью вообще не смотри пока что
Ruslan
Вот тут, в котролере есть функция сохранения
Dmitry
Вот тут видно, что идёт попытка записать пусто вместо числа в поле nasutki что-то там )
Ruslan
Но бегло не вижу тут ошибок, помню что у меня били предупреждения после обновления с этой функцией protected function postSaveHook(Joomla\CMS\MVC\Model\BaseDatabaseModel $model, $validData = array()){
Dmitry
А не, по моему поле linkedua, если я правильно понял
Dmitry
$model->save($data);
Dmitry
Вот тут сделай dump данных перед save, посмотри что там в них.
Dmitry
Если отладчика нет
Ruslan
👌👍👍
Dmitry
var_dump($data); die; $model->save($data);
Dmitry
Ну и гляди, чего там не хватает для колонки linkedua
Dmitry
В целом недо понять, в каком поле формы эти данные находятся и почему пустые вместо числа.
Ruslan
var_dump($data); die; $model->save($data);
Сделал, но все аналогично
Ruslan
Ruslan
Igor
У вас колонка int а вы туда empty string передаете
Dmitry
Пытаемся понять, почему туда пусто прилетает
Dmitry
Судя по коду из контроллера, пусто там точно не должно быть
Dmitry
По этому полю потом апдейт происходит
Igor
Пытаемся понять, почему туда пусто прилетает
филтрация формы. Или значение вообще не оправляется
Igor
Надо сам post посмотреть для начала
Dmitry
В модели save вообще нет
Igor
Вот контроллер
Причем тут он. Начните с того что в ообще уходит в пост. Прямо в браузере во вкладке сеть
Dmitry
Есть галка неприрывне логи
Подскажи невеждам )
Dmitry
Где это
Ruslan
Есть галка неприрывне логи
Покажите, пожалуйста, сделаю сейчас.
Dmitry
Я лично никогда не пользовался, а видимо зря ))
Igor
Igor
Igor
Ruslan
Вот похоже последний post запрос с непрерывними логами, не совсем понимаю где и что посмотреть тут
Ruslan
Ruslan
Кстати, а что означает 303 код от сервера, не видел его как то ранее.
Дмитрий
Кстати, а что означает 303 код от сервера, не видел его как то ранее.
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP
Igor
это может быть в вью?
Смотрите. Дебажиться это все так. 1. Смотрим что отправляеться (в бразуре) 2. Смотрим что приходи в CАМОЙ ПЕРВОЙ входа контролера. 3. Смотрим что имеем в данных перед save. Если в пункте 1 данные правильные, то это проблема бекенд. , если нет то это фронт. Если в п1 все верно а в п2 нет, то где очитка инпута. Если в п1 и п2 данные нормальные, то начинаем искать где и как менются данные в между пунктами 2 и 3
Дмитрий
303 See Other — документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с кодом 307 для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернёт клиенту страницу с результатами поиска. Введено в HTTP/1.1.
Дмитрий
ну их много, 3xx это редиректы
Дмитрий
разного значения
Dmitry
Xdebug в помощь 🤷‍♂
Igor
Xdebug в помощь 🤷‍♂
И без него можно. Там просто array
Dmitry
Но лучше с ним, брейкпоинтов понатыкал и играйся
hary
Не будет state
могу скінуть что у меня наклепано
hary
$taglast = implode(',', $params->get('taglast', array())); echo $taglast ; $tagscount = 1; $sortdirection = $params->get('sortdirection', 'desc'); switch ($params->get('sorttypel', 0)) { case 0: $sortfieldl = 'm.id'; break; case 1: $sortfieldl = 'm.title'; break; case 2: $sortfieldl = 'm.lft'; break; case 3: $sortfieldl = 'm.created_time'; } $querylastag = $db->getQuery(true) ->select( array( $db->quoteName('m.id'), $db->quoteName('m.parent_id'), $db->quoteName('m.title'), ////$db->quoteName('m.path'), //$db->quoteName('m.alias'), //$db->quoteName('m.lft'), $db->quoteName('m.published'), $db->quoteName('m.created_time'), ) ); $querylastag->from($db->quoteName('#__tags', 'm')); $querylastag->where($db->quoteName('m.parent_id') . ' = (' . $taglast . ')'); $querylastag->where($db->quoteName('m.published') . ' = 1'); $querylastag->order($db->quoteName('m.created_time').' '. $sortdirection); //ivenc //$query->limit($db->quoteName().'LIMIT 0,'.($tagscount); $db->setQuery($querylastag,0,$tagscount); $db->setQuery($querylastag); //echo $sortfieldl; echo $querylastag; $results2 = $db->loadObjectList(); print_r ($results2); return $results->id; echo $results2->id;