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


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

И снова, как всё-таки реализовать поиск по ID?


Лучший Ответ SmetDenis , 16 November 2013 - 06:50

Но. Как копировать в это поле ID материала при подаче нового материала, ведь его ещё не существует, подача ведь не сохранена, и соответственно нет ID ?

 

 

Это можно сделать в событии сохранения материала

\media\zoo\applications\jbuniversal\framework\events\jbevent.item.php saved()

 

В конец функции добавить примерно следующий код

$item = $event->getSubject(); // получаем объект сохраняемого материала
 
// для обычного поля text
$item->getElement('<ELEMENT_ID>')->bindData(array( 
    array('value' => $item->id)
));
 
// чтобы не было бесконечного цикла
$item->getParams()->set('jbzoo.no_index', 1); 
 
// сохраняем изменения
self::app()->table->item->save($item);

Минус метода - поле будет доступно при редактировании в панели управления, но его можно скрыть с помощью CSS

.element-acf2ccac-1059-4763-a8bd-30ed7c45cda8 {
    display:none;
}
Перейти к сообщению


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

#1 .polega.

.polega.

Отправлено 15 November 2013 - 21:37

На форуме это вопрос уже подымался в этой теме.

Рекомендации были такие:

 

Такую фичу сами в поиск вы не напишите, возможно в будущем реализую.

выход такой
либо создать отдельное поле и туда копировать id материала
либо этот id хранить в имени материала

Времени прошло достаточно, может кто уже реализовал эту возможность?

Если же нет, то есть вопросы - допустим я создам дополнительное поле для хранения копии ID, потом по нему легко организовать поиск. Но. Как копировать в это поле ID материала при подаче нового материала, ведь его ещё не существует, подача ведь не сохранена, и соответственно нет ID ?

Если это кто-то реализовал, можно пример кода? Сам не напишу...


  • 0

#2 Sliapy

Sliapy

Отправлено 15 November 2013 - 22:03

Вы рассуждаете правильно - до сохранения материала "выдрать" его айди не получится никак.


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#3 .polega.

.polega.

Отправлено 15 November 2013 - 22:24

Вы рассуждаете правильно - до сохранения материала "выдрать" его айди не получится никак.

Ну ладно, хотелось просто, добавить поле с ID и потом организовать по нему поиск. Простое решение, да и Денис давал такую рекомендацию.

 

выход такой
либо создать отдельное поле и туда копировать id материала

Наверняка есть способ - после сохранения, в обработке подачи, автоматом скопировать ID в нужное поле?


  • 0

#4 SmetDenis

SmetDenis

Отправлено 16 November 2013 - 06:50   Лучший Ответ

Но. Как копировать в это поле ID материала при подаче нового материала, ведь его ещё не существует, подача ведь не сохранена, и соответственно нет ID ?

 

 

Это можно сделать в событии сохранения материала

\media\zoo\applications\jbuniversal\framework\events\jbevent.item.php saved()

 

В конец функции добавить примерно следующий код

$item = $event->getSubject(); // получаем объект сохраняемого материала
 
// для обычного поля text
$item->getElement('<ELEMENT_ID>')->bindData(array( 
    array('value' => $item->id)
));
 
// чтобы не было бесконечного цикла
$item->getParams()->set('jbzoo.no_index', 1); 
 
// сохраняем изменения
self::app()->table->item->save($item);

Минус метода - поле будет доступно при редактировании в панели управления, но его можно скрыть с помощью CSS

.element-acf2ccac-1059-4763-a8bd-30ed7c45cda8 {
    display:none;
}

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



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


#5 .polega.

.polega.

Отправлено 16 November 2013 - 14:49

Денис, спасибо огромное, всё получилось. А то этот момент сильно напрягал заказчика, у меня к ID привязаны папки для фотографий объекта недвижимости, соответственно его должны посмотреть и запомнить менеджеры при создании объекта. Ну а они его стали использовать просто чтобы указать собственно объект или сослаться на него, и без поиска было тяжеловато.

А по поводу:

 

Минус метода - поле будет доступно при редактировании в панели управления, но его можно скрыть с помощью CSS

так у меня в админку вообще нет необходимости заходить, все действия выполняются с фронта.


  • 0




Click to return to top of page in style!