Гол. 0
Прос. 309

Скажем, у меня есть плагин Foo в osclass. В этом плагине мы регистрируем крюк, когда отправляется элемент. Согласно документации на **** osclass, единственный крючок, который запускается, когда объект отправлен, отправлен по posted_item.

Но, насколько я могу судить, просматривая код, он запускается после того, как данные исходного элемента уже были проверены и сохранены в базе данных. Что делать, если проверка какого-либо определенного кода плагина не удалась, и я хотел бы показать пользователю сообщение об ошибке и представить ему форму снова, чтобы дать ему возможность изменить эту информацию? Очень похоже на то, что вы пытаетесь отправить новый элемент, но не заполняете одну из базовой информации, например, description.

Кажется, я не могу найти способ сделать это. Только обходной путь, который я нахожу, чтобы исключить отправку элемента, несмотря на то, что он содержит недопустимые данные для плагина, без редактирования основного кода osclass, заключается в том, чтобы удалить отправленный элемент снова в posted_item обратного вызова posted_item. Это кажется чрезвычайно громоздким, а также требует, чтобы каждый другой плагин проверял, что элемент все еще существует, чтобы убедиться, что они не сохраняют данные, связанные с элементом, который теперь удален.

То, что я хотел бы, и задаться вопросом, пропустил ли я, - это крюк, который запускается, когда элемент отправлен, но перед тем, как он будет записан в базу данных, и будет иметь возможность генерировать "ошибки", которые могут привести к тому, что элемент не будет опубликован, и пользователь перенаправляется обратно в форму с "ошибкой", отображаемой точно так же, как и для базовой информации об элементе.

У кого-нибудь есть решение, которое я пропустил? Это похоже на очень важную часть плагинов, и без него размещенные элементы могут стать очень фрагментированными.

(200 баллов) в категории Общие вопросы | Прос. 309

1 ответ

Гол. 0

Я могу вам подсказать примерное решение использования **** pre_item_add 

<?php
function cust_my_plugin($aItem) {

osc_add_flash_error_message('My plugin has a complaint.');
$pItem = new CWebItem();
$pItem->redirectTo( osc_item_post_url() );
}

osc_add_hook('pre_item_add', 'cust_my_plugin');
?>

(1.9k баллов)
Добро пожаловать на сайт Osthemes Вопрос-ответ, где вы можете задавать вопросы и получать ответы от других пользователей сообщества.
21 вопросов
ответов: 21
комментариев: 3
13 пользователей