|
|
|
Yii. мульти-сценарий для модели
|
|||
|---|---|---|---|
|
#18+
Добрый день. Недавно начал писать на Yii (один в компании идею кинул, все подхватили, теперь учим :) ). Так вот, засада на сценариях для моделей(которые наш коллега вообще не пользовал блин!!!). Тут вроде бы всё нормально, но в форме полей 50 предполагается, которые очень замутно между собой переплетены, что просто обязывает применить несколько сценариев, или же плодить сценарии, разруливать их через десяток if...else... и т.д. . Каждый атрибут для activerecord присваивать вручную - это не вариант. Все атрибуты делать безопасными - тоже брешь. Если в FormModel валидировать поля можно в несколько шагов, то записать хотелось бы одним разом, так как определены правила beforeSave ну и т.д. Вообщем если кратко, надо что-то типа setScenario('scenario1, scenario2, scenario3'), только рабочее, потому что в таком виде сценарии вообще не срабатывают (он видимо ищет правило, где есть ВСЕ указанные сценарии, а не ОДИН ИЗ). Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 12:00 |
|
||
|
Yii. мульти-сценарий для модели
|
|||
|---|---|---|---|
|
#18+
ладно определю все атрибуты safe, а в beforeSave буду вызывать функцию deleteUnSafe и удалять все аттрибуты, которые не входят в список выбранных сценариев. Не знаю что выйдет, но сидеть думать нету времени :). Если у кого-то будут идеи лучше, буду очень рад их услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 12:53 |
|
||
|
Yii. мульти-сценарий для модели
|
|||
|---|---|---|---|
|
#18+
Я бы делал формы на основе других моделей (от тех же CFormModel), которые можно сделать для каждого случая - отдельную модель. Атрибуты если назвать так же, то можно потом просто через setAttributes все задать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 14:55 |
|
||
|
Yii. мульти-сценарий для модели
|
|||
|---|---|---|---|
|
#18+
HettЯ бы делал формы на основе других моделей (от тех же CFormModel), которые можно сделать для каждого случая - отдельную модель. Атрибуты если назвать так же, то можно потом просто через setAttributes все задать. )) пришёл начальник, зачеркнул эти несколько десятков полей и сказал "будут сканы грузить, а обрабатываем заказы не мы, нам пофиг". )) так что щас уже полей 15 осталось, и то всё понятно уже. Вообщем вопрос отпал :). Спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:04 |
|
||
|
Yii. мульти-сценарий для модели
|
|||
|---|---|---|---|
|
#18+
и, кстати, сценарии можно в правилах писать через запятую, (в 'on'=>) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:35 |
|
||
|
Yii. мульти-сценарий для модели
|
|||
|---|---|---|---|
|
#18+
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 сценария и меньше кода :) Вот именно этого я и хотел добиться... Или я как-то не так мыслю? просто меня удивляет, что разработчики этого не предусмотрели :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=129&tid=1464486]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
84ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 398ms |

| 0 / 0 |
