Универсальный модуль комментарии
- mihail_dev
- Сообщения: 243
- Зарегистрирован: 2013.07.17, 00:51
- Откуда: Молдова
- Контактная информация:
Re: Универсальный модуль комментарии
ну да количество это не проблема а как ссылку ты получаеш? и тайтл при необходимости?
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Универсальный модуль комментарии
Код: Выделить всё
public function getModuleModel()
{
if($this->module == self::MODULE_NEWS)
$moduleClass = 'News';
elseif($this->module == self::MODULE_BLOG)
$moduleClass = 'Post';
$model = CActiveRecord::model($moduleClass)->findByPk($this->row_id);
return $model;
}
- mihail_dev
- Сообщения: 243
- Зарегистрирован: 2013.07.17, 00:51
- Откуда: Молдова
- Контактная информация:
Re: Универсальный модуль комментарии
лан в любом случаю тут yii2 так что над как минимум переписать под него!
а там много новых фишек и хотелось бы их задействовать!
дабы воспользоваться мощью ии ))
и тем более у меня ночь и я туго соображаю но решил сварганить этот модуль если чёт толковое выйдет а не очередной велосипед отпишусь!
а там много новых фишек и хотелось бы их задействовать!
дабы воспользоваться мощью ии ))
и тем более у меня ночь и я туго соображаю но решил сварганить этот модуль если чёт толковое выйдет а не очередной велосипед отпишусь!
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Универсальный модуль комментарии
Это сообщение было до того как я понял, что параметр 'module' указывает что именно комметируется.mickgeek писал(а):Это да... Но я так и не понял, к чему было сказано:slavcodev писал(а):mickgeek, твой код понятен. Но это виджет вывода комментов и формы и не как не дает ответ на то как привязывать коммент к модели, если таких моделей комментируется не одна.
А потом, когда понял, написал что
Ты рендеришь виджет (уберу константу думаю так понятнее)slavcodev писал(а):Дальше что с этой переменной? Она шлется вместе с текстом комментария? Это кажется тоже самое что слать класс модели, метод описанный в первом сообщении.
Код: Выделить всё
$this->widget(..., ['module' => 'blog', 'id' => $post->id]);
Эти данные module и id нужно отправить в контролер, вместе с текстом комментария, где в зависимости от module, узнаем класс модели.
Т.к. запрос можно подделать, нужно проверять в контролере правильное ли значение module.
Так вот, этот метод ничем не отличается от варианта из певого сообщения,
не большая разница передавать класс модели или module по которому получаем класс.
Жду Yii 3!
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Универсальный модуль комментарии
Да уж, уже понятно.slavcodev писал(а):Это сообщение было до того как я понял, что параметр 'module' указывает что именно комметируется.slavcodev писал(а):mickgeek, твой код понятен. Но это виджет вывода комментов и формы и не как не дает ответ на то как привязывать коммент к модели, если таких моделей комментируется не одна.
Верно, несущественно отличается. Я об этом сразу и упомянул. Но у автора темы возникла проблема с счётчиком и ненужной передачей модели, я написал, как её избегаю.slavcodev писал(а):Ты рендеришь виджет (уберу константу думаю так понятнее)Виджет рендерит форму отправки нового сообщения. Так?Код: Выделить всё
$this->widget(..., ['module' => 'blog', 'id' => $post->id]);
Эти данные module и id нужно отправить в контролер, вместе с текстом комментария, где в зависимости от module, узнаем класс модели.
Т.к. запрос можно подделать, нужно проверять в контролере правильное ли значение module.
Так вот, этот метод ничем не отличается от варианта из певого сообщения,
не большая разница передавать класс модели или module по которому получаем класс.
Теперь касаемо критики о безопасности и некрасивости. Константа у меня вообще в виде числа передаётся. А правильность ввода в поле "module" решается простым валидатором, в котором происходит перебор указанных раннее констант (или массива из конфигурационного файла). Это так же "тяжело" реализовать, как и использовать controllerMap.
Re: Универсальный модуль комментарии
ну передаваемый класс или название модуля, оно по любому проверяется в валидеторе. Кста-те так же сделали разработчики цмс ЮПИ.
Изначально мой вопрос был на сколько это плохо и можно ли вообще так делать. Может есть возможность сделать как-то по другому ?
Но походу если мы действительно ходим сделать модуль независимый, то это будет единственный выход. Так как все концы в любом случае теряются при передаче данных в контрооллер комметнариев.
Изначально мой вопрос был на сколько это плохо и можно ли вообще так делать. Может есть возможность сделать как-то по другому ?
Но походу если мы действительно ходим сделать модуль независимый, то это будет единственный выход. Так как все концы в любом случае теряются при передаче данных в контрооллер комметнариев.
Re: Универсальный модуль комментарии
в общем я так понял лучше чем передавать имя модуля в скрытом поле формы вариантов нет?
- mihail_dev
- Сообщения: 243
- Зарегистрирован: 2013.07.17, 00:51
- Откуда: Молдова
- Контактная информация:
Re: Универсальный модуль комментарии
а если у модуля есть два типа страниц с комментами ?
Re: Универсальный модуль комментарии
в смысле ? Объясните пожалуйста подробнее, не уловил мысль.
- mihail_dev
- Сообщения: 243
- Зарегистрирован: 2013.07.17, 00:51
- Откуда: Молдова
- Контактная информация:
Re: Универсальный модуль комментарии
допустим в модуле есть список товаров и магазинов то есть 2 типа страниц страница магазина и страница товара на обоих надо вставить комменты!
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Универсальный модуль комментарии
Нужно добавить в таблицу новый столбец "controller", например. Но это уже более сложная система. Чаще всего, разработчики в таких не ограничиваются универсальными модулями, пишут/дорабатывают свои и не беспокоятся из-за вызовов одного из другого.
Re: Универсальный модуль комментарии
Вставить то не проблема. Это все решается через виджет с передачей нужных параметров. Вся суть темы всего в 1 моменте.
Когда мы добавляем комментарий, тоесть когда данные попадают в контроллер модуля комментарии именно в этом моменте нужно отследить к какому типу принадлежит комментарий. К чему он относится, к новостям, к статьям, к товарам. Суть всей темы именно в этом моменте.
Когда мы добавляем комментарий, тоесть когда данные попадают в контроллер модуля комментарии именно в этом моменте нужно отследить к какому типу принадлежит комментарий. К чему он относится, к новостям, к статьям, к товарам. Суть всей темы именно в этом моменте.
Re: Универсальный модуль комментарии
Ещё не пробовал заново проанализировать вопрос, но подумал ещё о таком варианте после приведения примера с несколькими страницами одной сущности:
- Добавляем определенную переменную в модуль коммента, на примере варианта с классМапом.
- В конфиге приложения описываем класс мап в зависимости от URI адреса запроса:
- В самом контроллере модуля, в момент добавления нового комментария, в зависимости от нашего "$_SERVER['REQUEST_URI']" парсим "$routeMap" и определяем нужную нам модель без стороних переменных из вне.
Возможно есть ошибки в логике, так как ничего не тестил, но начальный принцип думаю понятен.
- Добавляем определенную переменную в модуль коммента, на примере варианта с классМапом.
Код: Выделить всё
public $routeMap = [];
Код: Выделить всё
...
'modules' => [
'comments' => [
...
// В примере суффикс урл-ов является '/'
'routeMap' => [
'^\/gallery\/[\d]+\/$' => 'app\models\Gallery', // URL будет /gallery/1/
'^\/gallery\/[\w-]+\/$' => 'app\models\GalleryCategory', // URL будет /gallery/my-gallery-category/
]
...
]
]
...
Возможно есть ошибки в логике, так как ничего не тестил, но начальный принцип думаю понятен.
Re: Универсальный модуль комментарии
тут тогда получается проблема с роутерами. К примеру если мы реализовываем cms и даем возможность к примеру в админке делать свои url, то каждый раз нужно будет вносить правки в конфигурации модуля. Тогда может обратиться к сессиям ?
Re: Универсальный модуль комментарии
Ну если речь идет уже о цмс-ках, то возможно да, лучше уже пихать необходимую инфу в сесию пользователя. Только тут снова есть подводные камни, и ненужные дейсвия, что больше всего не нравится.
В общем больше ничего предложить не могу, когда буду разбиратся с вопросом, смогу более адекватно обсуждать данную тему.
В общем больше ничего предложить не могу, когда буду разбиратся с вопросом, смогу более адекватно обсуждать данную тему.
- mihail_dev
- Сообщения: 243
- Зарегистрирован: 2013.07.17, 00:51
- Откуда: Молдова
- Контактная информация:
Re: Универсальный модуль комментарии
я считаю что нужно привязываться к классу и пк тогда хоть на странице ничего не над передавать класс и пк можно будет получить из модели в виджете
Re: Универсальный модуль комментарии
Так на чем всё закончилось? Реализовал ли кто-нибудь этот Универсальный модуль?
Re: Универсальный модуль комментарии
Я сделал вот так: https://github.com/vova07/yii2-start-comments-module у себя!
Re: Универсальный модуль комментарии
Его можно подключить к базовой (не advanced) сборке?vova07 писал(а):Я сделал вот так: https://github.com/vova07/yii2-start-comments-module у себя!