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


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

Перехват поля в Submission

submission

Лучший Ответ SmetDenis , 02 March 2015 - 07:09

Сохранение произойдет само собой

components\com_zoo\controllers\submission.php

 

ep3z_200x0.png

 

Проблема вашего кода в этом месте. Объект события будет submission а не item. материал - это параметр.

$params = $event->getParameters();

 

<?php
$params = $event->getParameters();
if ($element = $params['item']->getElement('881eaf1c-a3d9-44ba-8d51-9078c6dc8e7e')) {
    $data = (array)$element->data();
    $data[0]['value'] = " qwerty";
    $element->bindData($data);
}
$event->setReturnValue($params);
// сохранять не нужно
Перейти к сообщению


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

#1 medzub

medzub

Отправлено 27 February 2015 - 10:27

Доброго времени суток!

У меня пара вопросов:

1. Подскажите пожалуйста где можно перехватить конкретное поле с фронтенда до записи в БД, чтобы посмотреть что вносит пользователь.

2. Как для textarea отрубить редактор контента.

 

Заранее благодарен!


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 27 February 2015 - 11:01

 

 

1. Подскажите пожалуйста где можно перехватить конкретное поле с фронтенда до записи в БД, чтобы посмотреть что вносит пользователь.

 

Можно воспользоваться событием beforeSave в файле 

сайт\media\zoo\applications\jbuniversal\framework\events\jbevent.submission.php

2. Как для textarea отрубить редактор контента.

Попробуйте отключить режим доверия в подаче материала


  • 0
Изображение
 

#3 medzub

medzub

Отправлено 27 February 2015 - 13:27

Насколько я понимаю дозапись должна выглядеть таким образом:

public static function beforeSave($event)
{
     $app = self::app();
     $item = $event->getSubject(); // получаем объект сохраняемого материала
     $element = $item->getElement('881eaf1c-a3d9-44ba-8d51-9078c6dc8e7e'); // получаем element id
     $data = (array)$element->data(); // получаем данные
     $data[0]['value'] = " qwerty"; // записываем новые данные
     $element->bindData($data);
     self::app()->table->item->save($item);
}

Но результат:

Strict Standards:
Declaration of ElementRelatedSaveTable::save() should be compatible with that of AppTable::save() in /media/zoo/elements/relateditemsmain/relateditemsmain.php on line 519
Fatal error: Call to undefined method Submission::getElement() in /media/zoo/applications/jbuniversal/framework/events/jbevent.submission.php on line 65

65 строчка:

$element = $item->getElement('881eaf1c-a3d9-44ba-8d51-9078c6dc8e7e');

Сообщение отредактировал medzub: 27 February 2015 - 13:31

  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 27 February 2015 - 14:14

medzub, не делайте сохранение, а сделайте замену значения 


  • 0
Изображение
 

#5 medzub

medzub

Отправлено 27 February 2015 - 14:41

medzub, не делайте сохранение, а сделайте замену значения 

А как это сделать?


  • 0

#6 SmetDenis

SmetDenis

Отправлено 02 March 2015 - 07:09   Лучший Ответ

Сохранение произойдет само собой

components\com_zoo\controllers\submission.php

 

ep3z_200x0.png

 

Проблема вашего кода в этом месте. Объект события будет submission а не item. материал - это параметр.

$params = $event->getParameters();

 

<?php
$params = $event->getParameters();
if ($element = $params['item']->getElement('881eaf1c-a3d9-44ba-8d51-9078c6dc8e7e')) {
    $data = (array)$element->data();
    $data[0]['value'] = " qwerty";
    $element->bindData($data);
}
$event->setReturnValue($params);
// сохранять не нужно

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



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


#7 medzub

medzub

Отправлено 03 March 2015 - 09:35

Спасибо огромное!


  • 0





Темы с аналогичным тегами submission

Click to return to top of page in style!