формы ICMS2 generator

передать переменную в функцию

#1 6 января 2016 в 09:31
есть форма, в форме есть поле с generator

  1.  
  2. public function init($id=false,$abonent){
  3.  
  4. ..........................
  5.  
  6. new fieldList('kogoychet', array(
  7. 'title' => LANG_ZAYAVKI_ADRESS_DOGOVOR,
  8. 'generator' => function () {
  9.  
  10. $model = cmsCore::getModel('zayavki');
  11. $list = $model->getADogovor('СЮДА ПЕРЕМЕННУЮ');
  12. // print_r($list);
  13. $items = array();
  14. foreach ($list as $item) {
  15. $items[$item['id_dogovor']] = $item['adres_tariff'];
  16. }
  17.  
  18. return $items;
  19. },
  20.  
  21. ...........................................
  22.  
Так вот, заметил, что туда переменную невозможно передать. Вопрос почему? делать глобальной? нужно передать переменную $abonent, просто в поля через default присваивается.

Подскажите ребят.
#2 14 января 2016 в 11:18
Удалил предыдущее сообщение, оно было заблуждением.

приводить надо все к классическому виду. Обязательно использование зарезервированных переменных $values, $item, $items

Т.е. в формах должно быть так:

  1.  
  2.  
  3. new fieldList('vajnost', array(
  4. 'title' => LANG_ZAYAVKI_ADRESS_VAJNOST,
  5. 'generator' => function ($item) {
  6.  
  7.  
  8. $listvj = cmsCore::getModel('zayavki')->getTVajnost();
  9.  
  10. $items[''] ='';
  11. if ($listvj){
  12. foreach ($listvj as $itemvj) {
  13. $items[$itemvj['id']] = $itemvj['namevj'];
  14. }
  15. }
  16.  
  17. return $items;
  18. },
  19.  
Внимательно обратите на указанные ранее переменные!!!!

В экшене присвоить значения для $values и передать ее в темплейт формы.

В TPL формы использовать тоже переменную values

  1.  
  2. $this->renderForm($form, $values, array(
  3. 'action'=>'',
  4. 'method'=>'post',
  5. 'id'=>$id,
  6. 'namez' => 'form1',
  7. 'toolbar'=> false
  8.  
  9. ),
  10.  
Все, остается только радоваться.
Думаю кому-то пригодится. Я убил на понимание ситуации пару дней. не мог понять почему не хочет мои произвольные переменные использовать. Оказалось надо использовать "зарезервированные".
#3 14 января 2016 в 13:22
Ничё лично не понял, ну да ладно, использую use
#4 14 января 2016 в 17:54

Ничё лично не понял, ну да ладно, использую use

lokanaft
Проблема была в том, что вместо названия переменной Item и Items использовал свои.

Выводить то выводило, а вот селектев не ставился на нужном месте. В этом была загвоздка.
#5 14 января 2016 в 18:20
Спасибо, kirkr!
#6 15 января 2016 в 12:55
Еще вопрос к знающим, к каким полям формы можно применять generator?

А то стоит задача наполнить наполовину форму перед добавлением. А не все нужно через LIST
#7 15 января 2016 в 13:07

к каким полям формы можно применять generator?

kirkr
List и Listbitmask😊Но можете свое стандартное-расширенное поле добавить с генератором, посмотрев его реализацию в ..\system\fields\list.php
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.