Blame view

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