Задать вопрос
@Wsearch

Насколько правильным будет решение на ларавель?

Здравствуйте! Подскажите пожалуйста, как можно реализовать подобный функционал на ларавеле.
Допустим у меня есть пользователь, он публикует статьи и может их скрывать. Как мне можно реализовать так, чтобы при публикации, если он не менял ничего в статье, то она автоматически проходила бы модерацию, а если он что-то в ней предварительно поменял, то пришлось бы опять ждать подтверждения?

Я реализовал это так.
1.Получаю в контроллере текущее состояние модели до обновления через getOriginal()
2. Затем беру массив текущего Request.
3. С помощью array_diff сравниваю два массива и если расхождение идет только по датам, т.е count не больше 2х, то значит фиксирую, что изминений в статье не было.
Подскажите пожалуйста, насколько это правильно, так делать. Может есть еще варианты проверки? Спасибо
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
pLavrenov
@pLavrenov
Разработка сайтов
Есть стандартное не надо ничего придумывать.

Добавляешь слушатель на событие updating
В слушателе проверяешь нужные поля на isDirty()
Если нужные поля "dirty" то делаешь манипуляции с отправкой на модерацию

Открой в исходниках модель и просмотри все методы которые она поставляет. Там много чего интересного и все описано.
Ответ написан
Комментировать
@tukreb
Самое простое и изящное решение, которое позволит форматировать текст без модерации.
Любой текст пропускаете через фильтр:
1. удаляете все BBcode, Markdown или что вы там используете.
2 удаляете все пробелы и знаки препинания, оставляя только символы в нижнем регистре.

После этого сохраняете полученные результат как хэш, в md5, SHA или как вам там удобнее, коллизия с md5 возможна, но если вы добавите проверку на дату публикации, то можно это опустить.

Теперь, когда автор будет что-то изменять в тексте, если он не изменил сам текст, то хэш не изменится, а значит не нужно проходит проверку, при этом автор свободно может форматировать текст и расставлять знаки препинания.
Ответ написан
Davidaa_WoW
@Davidaa_WoW
Сравнивайте итеративно конкретные поля, через Whitelist. Сравнение по количеству изменённых полей выглядит ненадёжным
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы