0 Пользователей и 1 Гость просматривают эту тему.
  • 35 Ответов
  • 588 Просмотров
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Здавствуйте!
В компоненте конкретная запись из списка записей вызывается для редактирования. При этом print_r, вставленные  в модели в методы getForm и loadFormData показывают правильную информацию, вернее, информация показывает, что всё правильно загружается, а при сохранении изменений в записи print_r не выводит информацию ни в контроллере, ни в функции сохранения save в модели. Почему так происходит?
Форма:
Спойлер
[свернуть]
т.е. должно выполниться задание order.save
контроллер order.php:
Спойлер
[свернуть]
модель order.php
Спойлер
[свернуть]
*

robert

  • Профи
  • 4077
  • 376
После print_r() надо делать exit(), чтобы прервать работу скрипта, иначе он пойдет дальше, не выводя нужную вам инормацию на экран.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Проверьте в контроллере какие параметры он вообще получает на входе.
Как предположение...
Заметил что одновременно при отправке формы уходит
GET: &task=order.save&
И POST: <input type="hidden" name="task" value="order.save"
Возможно, в результате получается массив task[].
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
После print_r() надо делать exit(), чтобы прервать работу скрипта, иначе он пойдет дальше, не выводя нужную вам инормацию на экран.
а в exit надо ту же переменную ставить? print_r($anything); exit($anything);?
*

robert

  • Профи
  • 4077
  • 376
а в exit надо ту же переменную ставить? print_r($anything); exit($anything);?
Не нужно. А почему не пробовали перед тем, как спрашивать?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
После print_r() надо делать exit(), чтобы прервать работу скрипта, иначе он пойдет дальше, не выводя нужную вам инормацию на экран.
Спасибо!
Оказалось, что поле типа checkbox, если при редактировании записи убрать галочку, то оно вообще исчезает из набора.
Вот набор до редактирования, где в поле [mcd_a] => 1 стоит галочка
Спойлер
[свернуть]
   [created_by] => 573
    [user_cod] => 12
    [user_lab_cod] => 14
    [head_id] => 0
    [exec_id] => 0
    [exec_cod] => 0
    [exec_lab_cod] => 24
)
requestData
-->
[свернуть]
а вот этот же набор, когда в поле [mcd_a]  галочку убрали
Спойлер
[свернуть]
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Не нужно. А почему не пробовали перед тем, как спрашивать?
((( Не могу объяснить, почему я так сделала. Извините.
Сначала спросила, а потом вспомнила, стала пробовать отладку.
*

fsv

  • Практически профи
  • 2525
  • 367
Оказалось, что поле типа checkbox, если при редактировании записи убрать галочку, то оно вообще исчезает из набора.
решение
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

robert

  • Профи
  • 4077
  • 376
решение
Угу, нечасто сталкиваюсь с такой проблемой, но использую 2-й вариант в таких случаях.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Septdir

  • Практически профи
  • 2273
  • 113
  • JoomlaZen
Так писать куда проще чем по два раза echo
Код: php
echo '<pre>', print_r($data), '</pre>';
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

dmitry_stas

  • Профи
  • 10030
  • 952
Так писать куда проще чем по два раза echo
true вторым параметром в print_r не хватает
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Практически профи
  • 2273
  • 113
  • JoomlaZen
true вторым параметром в print_r не хватает
В данном случае не надо в строку. Вот если надо было бы в переменю или в return передать. А чисто для вывода этого достаточтно. хотя в функции лучше exit() добавить чтобы остановить на нужном месте. то бишь
Код: php
echo '<pre>', print_r($data), '</pre>';
exit();
я так обычно делаю когда с save играюсь.  еще var_dump юзаю если нужно
Код: php
echo '<pre>', var_dump($data), '</pre>';
exit();
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
решение
Большое спасибо! Хорошо сказано:This is a common mistake for component developers thinking Joomla takes care of this.
« Последнее редактирование: 16.06.2017, 09:01:00 от GuDeVic »
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
В данном случае не надо в строку. Вот если надо было бы в переменю или в return передать. А чисто для вывода этого достаточтно. хотя в функции лучше exit() добавить чтобы остановить на нужном месте. то бишь
Код: php
echo '<pre>', print_r($data), '</pre>';
exit();
я так обычно делаю когда с save играюсь.  еще var_dump юзаю если нужно
Код: php
echo '<pre>', var_dump($data), '</pre>';
exit();
Спасибо, теперь и я так делаю.
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Спасибо всем, кто помог советами.
Не совсем, вернее совсем, не по теме. Вопрос: как вернуться из формы по ссылке, имитирующей кнопку, возврат на последний активный пункт меню?
Имеется в виду, что есть меню (на стороне сайта) для разных групп пользователей. Авторам можно создавать новые записи (предварительно выбрав тип записи), можно редактировать собственную запись, выбрав её из списка или просто просматривать. Завлабы должны утвердить, исполнители взять в работу, потом выполнить и т.д.
Т.е. в некоторые моменты надо после просмотра записи вернуться не на шаг назад, а именно на последний активный пункт меню. И лучше бы в этот момент не было возможности вернуться назад по стрелочке <-  в навигаторе.
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Угу, нечасто сталкиваюсь с такой проблемой, но использую 2-й вариант в таких случаях.
Да уж. А я, как оказалось, вчера воспользовалась вариантом 3.  2-й гораздо надёжнее, но вчера я о нём не знала.
*

dmitry_stas

  • Профи
  • 10030
  • 952
В данном случае не надо в строку.
ну как это не надо, если надо? а потом будете думать, откуда лишняя 1 в выводе.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Практически профи
  • 2273
  • 113
  • JoomlaZen
ну как это не надо, если надо? а потом будете думать, откуда лишняя 1 в выводе.
Ну есть она не просит, болтается себе ниже объекта или array. А так и писать меньше да и удобнее. Когда на хоткее или макросе или ещё на чем. Ну а не объект и не массив, лучше в var_dump.
Хотя сугубо имхо ибо 1 мне лично не мешает.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

dmitry_stas

  • Профи
  • 10030
  • 952
не, ну ты погляди на него :) это ошибка, а не имхо :) так делать нельзя. болтается ниже объекта или массива - это когда объект или массив. а была бы там строка или число
Код
$data = 5432;
echo '<pre>', print_r($data), '</pre>';
и уже было бы немного веселее :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Практически профи
  • 2273
  • 113
  • JoomlaZen
не, ну ты погляди на него :) это ошибка, а не имхо :) так делать нельзя. болтается ниже объекта или массива - это когда объект или массив. а была бы там строка или число
Код
$data = 5432;
echo '<pre>', print_r($data), '</pre>';
и уже было бы немного веселее :)
А на фига ты в print_r засовываешь строку или число. что же до return парметра он используется чтобы вернуть значение а не выводить его. А здесь чистый вывод.
для строки или чиста можно и так вывести.
Код: php
echo '<pre>'.$data.'</pre>';
А если ты не знаешь что тебе приходит то принт вообще не канет. лучше var_dump
« Последнее редактирование: 16.06.2017, 11:55:28 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

dmitry_stas

  • Профи
  • 10030
  • 952
тю :) та какая ж разница что засовывать. отладку надо делать в принципе не через print_r и var_dump, коли о том речь. но мы то о другом :) я о принципе говорю. а принцип как раз и заключается в том, что конструкция
Код
echo '<pre>', print_r($data), '</pre>';
дает неявный результат, и может быть причиной ошибки. ты ж советуешь, как лучше. а может получится наоборот. вот прочтут тему 100500 человек, и некоторые обязательно наткнутся на лишнюю единицу, которая приведет их в ступор :)

в конце концов цикл можно тоже так вывести
Код
$a = +print_r('start');
while ($a<=10) {
echo '<br />', $a++;
}
echo '<br />', 'finish';
но только надо четко понимать, что ты делаешь :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Практически профи
  • 2273
  • 113
  • JoomlaZen
ты ж советуешь, как лучше.
Я советую как проще. а проще == короче.
Но ладно признаю ты прав. и закончим на этом
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

dmitry_stas

  • Профи
  • 10030
  • 952
 *DRINK*
в принципе если разобраться, то мое утверждение что
Цитировать
так делать нельзя
тоже не совсем верно. так делать можно. но просто для копипаста имхо не годится такое :) потому что надо понимать, что делаешь, а копипастят обычно те, кто пока далек от понимания...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Практически профи
  • 2273
  • 113
  • JoomlaZen
*DRINK*
в принципе если разобраться, то мое утверждение чтотоже не совсем верно. так делать можно. но просто для копипаста имхо не годится такое :) потому что надо понимать, что делаешь, а копипастят обычно те, кто пока далек от понимания...
Ну даже в копи пасе надо понимать что ты делаешь
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
Очень познавательно.
Ну, а мой вопрос  Ответ #14 : Сегодня в 09:58:17 » можно задать в новой теме? Здесь не подскажете про возможность возврата на последний активный пункт меню?
*

dmitry_stas

  • Профи
  • 10030
  • 952
автоматической возможности возврата на последний активный пункт меню нет. сделать то можно, но для этого надо запоминать например URL последнего активного пункта меню в сессии, а в форме выводить кнопку для перехода на запомненный URL. запретить кнопку Back - теоретически тоже можно, но это тогда нужно все переходы делать аяксом, без изменения history браузера, но это очень глобально, переделки очень весомые скорее всего будут.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
автоматической возможности возврата на последний активный пункт меню нет. сделать то можно, но для этого надо запоминать например URL последнего активного пункта меню в сессии, а в форме выводить кнопку для перехода на запомненный URL. запретить кнопку Back - теоретически тоже можно, но это тогда нужно все переходы делать аяксом, без изменения history браузера, но это очень глобально, переделки очень весомые скорее всего будут.
Я понимаю, что в сессии надо записать URL последнего активного пункта меню. А как получить этот URL? Какие команды?
*

fsv

  • Практически профи
  • 2525
  • 367
На всех страницах формы можно попробовать пушить в хистори предыдущую страницу, чтобы при нажатии "назад", попасть на нее.
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
автоматической возможности возврата на последний активный пункт меню нет. сделать то можно, но для этого надо запоминать например URL последнего активного пункта меню в сессии, а в форме выводить кнопку для перехода на запомненный URL. запретить кнопку Back - теоретически тоже можно, но это тогда нужно все переходы делать аяксом, без изменения history браузера, но это очень глобально, переделки очень весомые скорее всего будут.
Если из пункта А направляешься в пункт Б (из меню для создания новой записи или по ссылке из списка записей для редактирования конкретной записи) как в пункте Б сгенерировать URL, по которой там оказался?
*

GuDeVic

  • Осваиваюсь на форуме
  • 159
  • 0
На всех страницах формы можно попробовать пушить в хистори предыдущую страницу, чтобы при нажатии "назад", попасть на нее.

Вы имеете в виду javascript:history.back();?  Ну, если запись вызвана из списка на редактирование, после успешного редактирования управление передаётся на просмотр результата редактирования, не смертельно, но можно шагами назад пройти обратный путь. А если при создании новой записи после просмотра созданной записи снова возвращаться в форму для создания новой записи? Это уже чревато, тем более, что создание новой записи связано с типом записи. Поэтому хотелось бы большей определённости при возврате, с вещами на выход.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Почему не показывается сведения об ошибке, если в настройках это включено?

Автор borro

Ответов: 13
Просмотров: 163
Последний ответ 29.06.2017, 13:30:20
от borro
Почему алиас категории исчезает на подстраницах?

Автор Jackky

Ответов: 8
Просмотров: 187
Последний ответ 12.04.2017, 14:09:48
от ChaosHead
почему код который работает в материале не работаете в модуле?

Автор bb777

Ответов: 7
Просмотров: 146
Последний ответ 21.02.2017, 12:07:46
от Efanych
Почему выдаёт ошибку NetworkError: Failed to execute 'send'...?

Автор cosmosRusnire

Ответов: 0
Просмотров: 324
Последний ответ 28.01.2017, 10:12:45
от cosmosRusnire
При переходе по ссылкам я остаюсь на главной. Почему?

Автор Lemady

Ответов: 19
Просмотров: 426
Последний ответ 25.12.2016, 15:42:32
от Efanych