Blame view

vendor/yiisoft/multiparser/DynamicFormHelper.php 2 KB
474f35bf   Mihail   add DynamicFormHe...
1
2
3
4
5
6
7
8
  <?php
  /**
   * Created by PhpStorm.
   * User: Cibermag
   * Date: 08.09.2015
   * Time: 14:50
   */
  
74072a2a   Mihail   add first version...
9
  namespace yii\multiparser;
474f35bf   Mihail   add DynamicFormHe...
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  
  use yii\base\DynamicModel;
  use yii\grid\GridView;
  use yii\grid\SerialColumn;
  
  /**
   * Class DynamicFormHelper
   * @package backend\components\parsers
   * Содержит процедуры генерации компонентов с динамическим количеством аттрибутов
   */
  class DynamicFormHelper
  {
  
  
      /**
       * @param $source - int or array
       * если передан массив, то создается модель с атрибутами переданными в массиве,
       * ключ - имя, значение - значение аттрибута
       * если передано число, то создается переданное количество аттрибутов с именами - attr_0, attr_1...
       */
      public static function CreateDynamicModel($source)
      {
          $arr_keys = [];
          if (is_array($source)) {
              $arr_keys = $source;
          } elseif (is_int($source)) {
  
              $i = 0;
              while ($source > $i) {
                  $arr_keys[] = "attr_{$i}";
                  $i++;
              }
              array_flip($arr_keys);
  
          }
  
          $model = new DynamicModel($arr_keys);
  
          return $model;
      }
  
74072a2a   Mihail   add first version...
51
52
      // @todo add comments
      public static function CreateGridWithDropDownListHeader( $dataProvider, $form, $header_model, $arr_header_values )
474f35bf   Mihail   add DynamicFormHe...
53
54
55
56
57
58
59
60
61
      {
          $columns_config = [['class' => SerialColumn::className()]];
          $i = 0;
          foreach( $header_model as $key => $value ) {
  
              $columns_config[] = ['header' => $form->field($header_model, $key, ['inputOptions' => ['label' => '']])->dropDownList($arr_header_values), 'attribute' => $i];
              $i++;
          }
  
474f35bf   Mihail   add DynamicFormHe...
62
63
64
65
66
67
68
69
70
71
          $dynamic_grid_view = GridView::widget( ['dataProvider' => $dataProvider,
                                                  'columns' => $columns_config ] );
  
          return $dynamic_grid_view;
  
      }
  
  
  
  }