@yii2ru

Страница 1079 из 1721
Vladimir
21.03.2018
13:13:11
Тогда толку особо не будет же, что я хидден инпутом его делаю, что извращаюсь с формо1

Matviy
21.03.2018
13:13:30
Просто всегда пишите бекенд так, как будто на фронте у вас злобный кулхацкер, который пихает в запросы все что угодно

Google
Vladimir
21.03.2018
13:16:00
при генерации формы сохраняй данные в сессии
Сохранить модуль id и материал id в сессии, а потом при обработке контроллером аякса обращаться к сессии за этими данными?

NVlad
21.03.2018
13:16:29
да

Vladimir
21.03.2018
13:16:46
Просто всегда пишите бекенд так, как будто на фронте у вас злобный кулхацкер, который пихает в запросы все что угодно
Ну такто кроме того, что через форму одного материала он сможет отправить коммент в совершенно другой модуль или материал ничего страшного не произойдет, но все равно неприятно

NVlad
21.03.2018
13:16:56
единственное могут быть проблемы когда будет открыто несколько вкладок с сайтом

но там уже начнутся и проблемы с csrf

Matviy
21.03.2018
13:18:25
В любом случае проще не доверять

NVlad
21.03.2018
13:19:21
NVlad
21.03.2018
13:21:36
Ну такто кроме того, что через форму одного материала он сможет отправить коммент в совершенно другой модуль или материал ничего страшного не произойдет, но все равно неприятно
тогда не усложняй. если у человека есть права добавлять комменты в то место куда добавляется комментарий - добавляй. если у него нет на это прав - ошибка.

NVlad
21.03.2018
13:32:39
Так и шо тогда делать
храни данные в скрытых полях

Vladimir
21.03.2018
13:33:30
тогда не усложняй. если у человека есть права добавлять комменты в то место куда добавляется комментарий - добавляй. если у него нет на это прав - ошибка.
Ну модуль можно через IN проверять, а вот что с материалом делать- добавить лишнюю проверку, есть ли его id'шник в соответствующей таблице?

NVlad
21.03.2018
13:35:22
тут уже зависит от того, что необходимо получить

Google
NVlad
21.03.2018
13:35:59
если достаточно проверить наличие записи в нужной таблице, то так и делай

Vladimir
21.03.2018
13:39:55
Ну смотри, так он сможет слать комментарии к несуществующим материалам, а так я проверю что тот куда он шлет существует

NVlad
21.03.2018
13:45:26
не зная логики трудно что-то порекомендовать. может в таблице foregin key который не даст добавить запись если нет записи к которой он относится

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

49576
21.03.2018
13:51:02
Не правильно делаете. Широкую на широкую!

Vladimir
21.03.2018
13:52:11
не зная логики трудно что-то порекомендовать. может в таблице foregin key который не даст добавить запись если нет записи к которой он относится
Ну тут проблема в том, что форигн кея нету тк комментарий может добавляться к материалам из разных таблиц, там есть поле entity_id и module, но думаю тогда может передавать в module класс модели или тейблнейм, и уже в контроллере перед добавлением коммента проверять это ручками

Ну есть ли в module_table или moduleClass:tablename материал с entity_id

NVlad
21.03.2018
13:57:20
@Playerro, @mrG1K дело говорит :)

Vladimir
21.03.2018
14:05:00
Ок, сяп

большой

Oleg
21.03.2018
14:43:40
Привет! Подскажите, пожалуйста, проверенную и 100% рабочую связку "Поведение для Дерева + Виджет дерева" для организации иерархии. Уже замахался, из рабочих только Дерево от Картика, но оно замороченное слишком и использует Nested Sets (я предпочитаю Adjacency List). Проверял виджеты от Paulzi, Arogachev, Voskobovich итд - почти ничего не работает по разным причинам (то нотайсы выкидывает, то ещё что-то). Ещё у меня нюанс. Есть две модели - основная с деревом (Page) и связанная (PageContent) - для хранения мультиязычных данных (name, description etc.). Так вот, в основном в этих деревьях (например у Картика), аттрибут "name" - в основной таблице с деревом хранится, а мне надо, чтобы оно брало его со связанной модели. Сохраняло при редактировании тоже в связанную модель, а не в основную таблицу с деревом.

Павел
21.03.2018
14:49:29
пили сам руками

Vladimir
21.03.2018
14:49:56
Напиши свой валидатор. который будет это делать
А может как-то хитро заюзать валидатор exists?

Только мне надо сделать динамический targetClass

И вообще, можно ли один атрибут использовать при валидации другого

А то чет не найду никак

Vladimir
21.03.2018
14:59:03
О все, разобрался

NVlad
21.03.2018
15:00:18
Только мне надо сделать динамический targetClass
унаследуйся от ExistValidator перепиши validateAttribute на что-нибудь подобное validateAttribute($model, $attribute) { $this->targetClass = ...; parent::validateAttribute($model, $attribute) }

Google
NVlad
21.03.2018
15:00:44
и используй свой валидатор

Ad.x ??
21.03.2018
15:21:36
перебираешь перебираешь, ставишь все подряд... хоть бы кто додумался сделать как надо. Одно говно пишут!

Андрей
21.03.2018
15:24:19
парни

почему Yii::$app->urlManager->baseUrl не работает?

ну и вообще, как достать домен

Ad.x ??
21.03.2018
15:25:18
NVlad
21.03.2018
15:25:35
Андрей
21.03.2018
15:25:48
\Yii::$app->request->baseUrl
тоже не работает

Oleg
21.03.2018
15:26:05
NVlad
21.03.2018
15:26:17
случайно не из консоли вызываешь?

Андрей
21.03.2018
15:26:57
нет

<?= Yii::t('app', "Hello {$user->name} user name {$user->username}, you trying to reset password on {host}." , [ 'host' => Yii::$app->request->baseUrl, ]) ?>

Ad.x ??
21.03.2018
15:27:40
стебёшься? ну-ну... у тебя, наверно, всё всегда сразу получается)))
просто не ставлю говнорасширения типа картика. А если что-то эксклюзивное нужно - руками. У тебя явно эксклюзивное, раз иерархию дерева нада хранить отдельно от мета данных сущности

да и делается это легко по сути

Oleg
21.03.2018
15:29:42
просто не ставлю говнорасширения типа картика. А если что-то эксклюзивное нужно - руками. У тебя явно эксклюзивное, раз иерархию дерева нада хранить отдельно от мета данных сущности
это просто один из вариантов реализации мультиязычности, ничего тут эксклюзивного нет. А заморачиваться с фронт-ендом в виде JS-плагинов для дерева нет времени, тем более, есть куча дополнений. Вот и спрашиваю, может кто на практике сталкивался не с говнодополнениями, о которых, я могу и не знать

NVlad
21.03.2018
15:32:23
нет
воспользуйся \yii\helpers\Url::base(true);

Oleg
21.03.2018
15:32:28
со схемами у меня всё в порядке, мне нужен рабочий виджет для управления деревом и поведение, с которым он нормально работает. само дерево (его формат) я могу использовать любое, это не столь важно, хоть я и предпочитаю смежный список

Google
Андрей
21.03.2018
15:33:49
Vladimir
21.03.2018
15:34:09
По-прежнему актуально, может кто знает

Ку всем, кто юзает ckeditor для yii2, вы не знаете какими параметрами задать стили для div'a окна редактора?

echo $form->field($model, 'content')->textarea()->widget(CKEditor::className(),[ 'editorOptions' => [ 'preset' => 'basic', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать 'inline' => false, //по умолчанию false ],

Oleg
21.03.2018
15:36:29
Максим
21.03.2018
15:40:10
По-прежнему актуально, может кто знает
для какого дива надо задать, скрин дома покажи

NVlad
21.03.2018
15:44:48
<?= Yii::t('app', "Hello {$user->name} user name {$user->username}, you trying to reset password on {host}." , [ 'host' => Yii::$app->request->baseUrl, ]) ?>
а вообще странная конструкция, она же работать как надо не будет

или под каждого пользователя своё приветствие?)

Максим
21.03.2018
15:46:14
или под каждого пользователя своё приветствие?)
выходит, что да) под каждого юзера надо отдельную строку перевода делать, иначе не найдет

Андрей
21.03.2018
15:46:54
всмысле

просто имя не будет переводится

NVlad
21.03.2018
15:48:51
второй параметр это ключ по которому происходит поиск перевода, а у вас прямо в этот ключ подставляется имя и юзернейм. и получается что для каждого пользователя этот ключ уникальный

Тимур
21.03.2018
16:13:53
ребят привет. для рест контроллера делаю базовый index экшен. хочу от него отнаследовать дочерний экшен и дописать логику к датапровайдеру. где это лучше сделать? в init или beforeRun или как то еще?

Vladimir
21.03.2018
16:36:11
Максим
21.03.2018
16:49:50
скрин дома скедитора?
Ага, куда именно надо класс добавить?

скрин дома скедитора?
Просто добавить его в options текстареи не подходит?

PowerAxis
21.03.2018
17:17:25
почему я не могу присвоить значение NULL для свойства photo? public function deleteImage($id) { $article = $this->articles->get($id); $article->photo = null; $this->articles->save($article); return $article; }

а если я напишу $article->photo = '123'; то присвоится 123

в БД нет ограничения на null

Andrey
21.03.2018
17:23:09
почему я не могу присвоить значение NULL для свойства photo? public function deleteImage($id) { $article = $this->articles->get($id); $article->photo = null; $article->save(); return $article; } А так?

Google
PowerAxis
21.03.2018
17:23:48
та не, у меня сейв в репозитории

Тимур
21.03.2018
17:26:50
Andrey
21.03.2018
17:29:22
та не, у меня сейв в репозитории
Тогда смотри свою save. При save может смотришь изменённые атрибуты, а photo ты стер и оно не участвует в сохранении?

PowerAxis
21.03.2018
17:29:48
так у меня как бы задача его стереть

как правильно сделать?

я же потом в save передаю свою article

Andrey
21.03.2018
17:30:40
Save($article) покажи

PowerAxis
21.03.2018
17:31:03
да там нет ничего, обычный сейв с э

с эксепшеном

public function save(Article $article): void { if (!$article->save()) { throw new \RuntimeException('Ошибка при сохранении.'); } }

Maxim
21.03.2018
17:31:58
так у меня как бы задача его стереть
Попробуй ансет фото и сохрани артикл

PowerAxis
21.03.2018
17:33:01
та пробовал, что-то не канает

Maxim
21.03.2018
17:33:04
Может у тебя референс стоит или нот нал в бд, и ты не можешь удалить из-за этого?

PowerAxis
21.03.2018
17:33:28
ща проверю, но, вроде, ничего такого не ставил

не, только индекс

Страница 1079 из 1721