onContentContentAfterAddApprove

InstantCMS 2.X

вернуть на доработку

#1 5 июля 2020 в 18:38
Как вернуть пост на доработку, если после проверки поля в onContentContentAfterAddApprove есть ошибка?
#2 5 июля 2020 в 19:23

Как вернуть пост на доработку, если после проверки поля в onContentContentAfterAddApprove есть ошибка?

Рачей
Так наверное:
if (есть ошибка){$item['is_approved'] = 0;}
#3 6 июля 2020 в 00:23
Компьютера нет под рукой, но кажется, ещё нужно обязательно вернуть $item.
#4 6 июля 2020 в 08:20


Так наверное:
if (есть ошибка){$item['is_approved'] = 0;}

Ris
Думал об этом… но он в черновики отправляет… а как бы сделать что бы отправил на доработку..
типа когда не правильно заполнено поле!
#5 6 июля 2020 в 08:20
еще и подсветить его!
#6 6 июля 2020 в 11:18
Вот кстати меня посетила мысль… неплохо бы сделать на уровне движка какую-то штуку для проверки поля… там есть выбор Урл, только латинские буквы и цифры, в которые неплохо бы добавить например подчерк… Ну вот нужен подчерк мне и все…
Или же мне например нужен урл определенного сайта… я пишу проверку на принадлежность его…
Да много всяких там фишечек можно проверять…

По вопросу… я сейчас сделал, в принципе то что надо… если поле не правильное отправляю его редактировать форму… но вот фигня в том что это же надо проверить и при редактировании… получается писать один и тот же код 2 раза...
Думаю эту фигню в класс добавить и подцепить файл класса что бы в 2 местах не писать одно и тоже...

А может все-таки есть какое-то более правильное решение??
#7 6 июля 2020 в 13:09

а как бы сделать что бы отправил на доработку..

Рачей
Попробуйте так
  1. $item['reason'] = 'Написать причину';
  2. $item['page_url'] = href_to_abs($ctype['name'], 'edit', $item['id']);
  3. $this->controller_moderation->reworkModeratorTask($ctype['name'], $item, $this->getUniqueKey(array($ctype['name'], 'moderation', $item['id'])));
#8 6 июля 2020 в 13:10
Evanescence, спасибо! Сейчас проверим в действии.
#9 6 июля 2020 в 13:31
НЕ, не клеится что-то… у меня редактирование запрещено...
даже если я ставлю 'is_approved' => '0' он просто редактирует уже созданную страницу...
а надо что бы он ее не создавал
сна посмотрю что за reworkModeratorTask такой
#10 6 июля 2020 в 13:35
так это отправка на доработку после создания записи… не не прокатит… это те же яйца только вид с — лева. тут надо что-то другое
#11 6 июля 2020 в 13:37
нашел хук content_validate… что-то мне подсказывает что тут можно намутить то что мне надо
#12 6 июля 2020 в 13:49
Хук onContentContentAfterAddApprove сработает после добавления, вам нужен хук content_before_add

Список хуков можете посмотреть в файле \system\controllers\content\actions\item_add.php наберите в поиске слово hook prntscr.com/tco1k4
#13 6 июля 2020 в 13:51

нашел хук content_validate… что-то мне подсказывает что тут можно намутить то что мне надо

Рачей
Хотя да, если проверка валидации, тогда этот подойдет
#14 6 июля 2020 в 13:54
Ага😊 сейчас буду тут мухлевать!
#15 7 июля 2020 в 17:40
Начал мухлевать… на форуме не нашел ничего дельного...

при валидации идет возврат 2 массивов по всей видимости в одном данные а во втором ошибки

  1. list($item, $errors) = cmsEventsManager::hook('content_validate', array($item, $errors), null, $this->request);
попробовал
  1.  
  2. public function run($data) {
  3. $errors['моёполе'] = 'Необходимо ввести правильный формат';
  4. $item = array($data, $errors);
  5. return $item;
  6. }
  7.  
возвращает форму с пометкой поля красным, а вот данные куда-то теряются.

Где я ошибаюсь?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.