Перейти к содержимому


Фотография
- - - - -

submission - Очищается поле Даты при валидации


Лучший Ответ Михаил , 29 May 2013 - 14:31

Ошибку не нашел. Сделал себе тупую заплатку. Нужным полям с датой присвоил свойства "Повторяемое". А на самой странице Submission

с формой у этих полей с датой убрал в шаблоне ссылку "+Добавить элемент" и иконки перетаскивания и удаления полей.

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 7

#1 Михаил

Михаил

Отправлено 27 May 2013 - 16:41

Здравствуйте.

При валидации перед отправкой формы - поля с датами в файле /media/zoo/applications/jbuniversal/elements/date/date.php

становятся пустыми.

(При этом в этой форме submission есть также поля дат "itempublish_down" и "itempublish_up", которые рендерятся и обрабатываются в других файла и при валидации переменные сохраняются.)

 

Искал ошибку в /media/zoo/applications/jbuniversal/elements/date/date.php

обнаружил странное в этой функции 

	protected function _edit() {
		$name = $this->getControlName('value');
		if ($value = $this->get('value', '')) {

			try {

				$value = $this->app->html->_('date', $value, $this->app->date->format(self::EDIT_DATE_FORMAT), $this->app->date->getOffset());

			} catch (Exception $e) {}

		}
		return $this->app->html->_('zoo.calendar', $value, $name, $name, array('class' => 'calendar-element'), true);
	}

точнее этот запрос

$value = $this->get('value', '')

Он, как я понял, обращается к файлу  /media/zoo/elements/repeatable/repeatable.php и функции

	public function get($key, $default = null) {
        return 	parent::get("{$this->_position}.{$key}", $default);
	}

которая должна возвращать значение в $value

.

И она его получает, когда тестирую принтом или эхо это запрос

echo parent::get("{$this->_position}.{$key}", $default);

но "return" назад в $value файла date.php почему-то ничего не отдает, будто есть промежуточный файл, где переменная затирается.

Прикрепленные изображения

  • val.jpg

  • 0

#2 SmetDenis

SmetDenis

Отправлено 27 May 2013 - 18:08

Вообще вся "магия" происходит тут _validateSubmission (),

который при сабмите вызывается из контроллер submission в методе _bind()

 

т.е вы не там ищите.

 

Может у вас не верный формат даты отправляется?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 Михаил

Михаил

Отправлено 27 May 2013 - 18:57

Вообще вся "магия" происходит тут _validateSubmission (),

который при сабмите вызывается из контроллер submission в методе _bind()

 

т.е вы не там ищите.

 

Может у вас не верный формат даты отправляется?

_bind() нормально обрабатывается

 

формат корректный по-умолчанию '%Y-%m-%d %H:%M:%S'

данные в поле задается из встроенного календарика, ничего не менял


  • 0

#4 SmetDenis

SmetDenis

Отправлено 27 May 2013 - 18:59

_bind() нормально обрабатывается

Как вы это определили?

Судя по первому вашему посту - не нормально.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 Михаил

Михаил

Отправлено 27 May 2013 - 19:53

в файле date.php проверил принтом

	public function _validateSubmission($value, $params) {
		$value = $value->get('value');

		if (!empty($value) && ($time = strtotime($value))) {
			$value = strftime(self::EDIT_DATE_FORMAT, $time);
		}

        $test = array('value' => $this->app->validator->create('date', array('required' => $params->get('required')), array('required' => 'Пожалуйста выберите дату.'))
				->addOption('date_format', self::EDIT_DATE_FORMAT)
				->clean($value));
        print_r($test);
	}

переменная test возвращает Array ( [value] => 2013-05-16 00:00:00 ), т.е. результат выходит

_bind() тоже переменные возвращает

Подскажите, может я не тот контроллер смотрю, "submission вызывающий метод _bind()",  это же здесь /components/com_zoo/controllers ?

И не понимаю, что за параметры-цифры возвращает функция validateSubmission($value, $params) - Array ( [0] => 30190 )

Спасибо


  • 0

#6 SmetDenis

SmetDenis

Отправлено 27 May 2013 - 19:55

И не понимаю, что за параметры-цифры возвращает функция validateSubmission($value, $params) - Array ( [0] => 30190 )

 

 

К сожалению, я тоже не могу сказать что это. Нужно увидеть форму воочию. 

Возможно ID материала.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 Михаил

Михаил

Отправлено 28 May 2013 - 07:10

Обнаружил такую ерунду.

Если в настройках в админке указать у одного из полей даты свойство "Повторяемое", т.е. можно "Добавить множественные поля текста" , то при валидации эти повторяемые поля сохраняют значения, а поле даты ("Дата окончания") где нет галочки "Повторяемое" зачищает значение. При этом не имеет значение сколько элементов у повторяемого поля "Дата начала" - 1 или 2 - все данные сохраняет при валидации.

sm1.jpg


  • 0

#8 Михаил

Михаил

Отправлено 29 May 2013 - 14:31   Лучший Ответ

Ошибку не нашел. Сделал себе тупую заплатку. Нужным полям с датой присвоил свойства "Повторяемое". А на самой странице Submission

с формой у этих полей с датой убрал в шаблоне ссылку "+Добавить элемент" и иконки перетаскивания и удаления полей.


  • 0




Click to return to top of page in style!