powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Yii. мульти-сценарий для модели
6 сообщений из 6, страница 1 из 1
Yii. мульти-сценарий для модели
    #38023083
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Недавно начал писать на Yii (один в компании идею кинул, все подхватили, теперь учим :) ). Так вот, засада на сценариях для моделей(которые наш коллега вообще не пользовал блин!!!). Тут вроде бы всё нормально, но в форме полей 50 предполагается, которые очень замутно между собой переплетены, что просто обязывает применить несколько сценариев, или же плодить сценарии, разруливать их через десяток if...else... и т.д. . Каждый атрибут для activerecord присваивать вручную - это не вариант. Все атрибуты делать безопасными - тоже брешь. Если в FormModel валидировать поля можно в несколько шагов, то записать хотелось бы одним разом, так как определены правила beforeSave ну и т.д.

Вообщем если кратко, надо что-то типа setScenario('scenario1, scenario2, scenario3'), только рабочее, потому что в таком виде сценарии вообще не срабатывают (он видимо ищет правило, где есть ВСЕ указанные сценарии, а не ОДИН ИЗ).

Заранее благодарен.
...
Рейтинг: 0 / 0
Yii. мульти-сценарий для модели
    #38023213
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно определю все атрибуты safe, а в beforeSave буду вызывать функцию deleteUnSafe и удалять все аттрибуты, которые не входят в список выбранных сценариев. Не знаю что выйдет, но сидеть думать нету времени :). Если у кого-то будут идеи лучше, буду очень рад их услышать.
...
Рейтинг: 0 / 0
Yii. мульти-сценарий для модели
    #38023453
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы делал формы на основе других моделей (от тех же CFormModel), которые можно сделать для каждого случая - отдельную модель. Атрибуты если назвать так же, то можно потом просто через setAttributes все задать.
...
Рейтинг: 0 / 0
Yii. мульти-сценарий для модели
    #38023469
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЯ бы делал формы на основе других моделей (от тех же CFormModel), которые можно сделать для каждого случая - отдельную модель. Атрибуты если назвать так же, то можно потом просто через setAttributes все задать.

)) пришёл начальник, зачеркнул эти несколько десятков полей и сказал "будут сканы грузить, а обрабатываем заказы не мы, нам пофиг". )) так что щас уже полей 15 осталось, и то всё понятно уже. Вообщем вопрос отпал :). Спасибо...
...
Рейтинг: 0 / 0
Yii. мульти-сценарий для модели
    #38023541
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и, кстати, сценарии можно в правилах писать через запятую, (в 'on'=>)
...
Рейтинг: 0 / 0
Yii. мульти-сценарий для модели
    #38023573
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettи, кстати, сценарии можно в правилах писать через запятую, (в 'on'=>) это да... они так и написаны. но вот когда я пишу setScenario('s1, s2, s3'), и правило с 'on'=>'s2, s3', то оно не валидирует по этому правилу, а мне надо было что бы валидировало.

представьте ситуацию, когда есть 3 поля (e1, e2, e3). если каждое поле может иметь значение заполнено/не заполнено, то получаем 7 вариантов их заполнения (то есть 7 сценариев). Но, если мы сможем комбинировать сценарии, то для каждого поля создадим свой сценарий, и будем их комбинировать (e1)(e2)(e3)(e1, e2)(e2, e3)(e3, e1)(e1, e2, e3). Таким образом получаем 3 сценария и меньше кода :) Вот именно этого я и хотел добиться... Или я как-то не так мыслю? просто меня удивляет, что разработчики этого не предусмотрели :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Yii. мульти-сценарий для модели
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]