Blame view

vendor/yiisoft/yii2-bootstrap/ActiveForm.php 3.25 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  <?php
  /**
   * @link http://www.yiiframework.com/
   * @copyright Copyright (c) 2008 Yii Software LLC
   * @license http://www.yiiframework.com/license/
   */
  
  namespace yii\bootstrap;
  
  use Yii;
  use yii\base\InvalidConfigException;
  
  /**
   * A Bootstrap 3 enhanced version of [[\yii\widgets\ActiveForm]].
   *
   * This class mainly adds the [[layout]] property to choose a Bootstrap 3 form layout.
   * So for example to render a horizontal form you would:
   *
   * ```php
   * use yii\bootstrap\ActiveForm;
   *
   * $form = ActiveForm::begin(['layout' => 'horizontal'])
   * ```
   *
   * This will set default values for the [[yii\bootstrap\ActiveField|ActiveField]]
   * to render horizontal form fields. In particular the [[yii\bootstrap\ActiveField::template|template]]
   * is set to `{label} {beginWrapper} {input} {error} {endWrapper} {hint}` and the
   * [[yii\bootstrap\ActiveField::horizontalCssClasses|horizontalCssClasses]] are set to:
   *
   * ```php
   * [
   *     'offset' => 'col-sm-offset-3',
   *     'label' => 'col-sm-3',
   *     'wrapper' => 'col-sm-6',
   *     'error' => '',
   *     'hint' => 'col-sm-3',
   * ]
   * ```
   *
   * To get a different column layout in horizontal mode you can modify those options
   * through [[fieldConfig]]:
   *
   * ```php
   * $form = ActiveForm::begin([
   *     'layout' => 'horizontal',
   *     'fieldConfig' => [
   *         'template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}",
   *         'horizontalCssClasses' => [
   *             'label' => 'col-sm-4',
   *             'offset' => 'col-sm-offset-4',
   *             'wrapper' => 'col-sm-8',
   *             'error' => '',
   *             'hint' => '',
   *         ],
   *     ],
   * ]);
   * ```
   *
   * @see \yii\bootstrap\ActiveField for details on the [[fieldConfig]] options
   * @see http://getbootstrap.com/css/#forms
   *
   * @author Michael Härtl <haertl.mike@gmail.com>
   * @since 2.0
   */
  class ActiveForm extends \yii\widgets\ActiveForm
  {
      /**
       * @var string the default field class name when calling [[field()]] to create a new field.
       * @see fieldConfig
       */
      public $fieldClass = 'yii\bootstrap\ActiveField';
      /**
       * @var array HTML attributes for the form tag. Default is `['role' => 'form']`.
       */
      public $options = ['role' => 'form'];
      /**
       * @var string the form layout. Either 'default', 'horizontal' or 'inline'.
       * By choosing a layout, an appropriate default field configuration is applied. This will
       * render the form fields with slightly different markup for each layout. You can
       * override these defaults through [[fieldConfig]].
       * @see \yii\bootstrap\ActiveField for details on Bootstrap 3 field configuration
       */
      public $layout = 'default';
  
  
      /**
       * @inheritdoc
       */
      public function init()
      {
          if (!in_array($this->layout, ['default', 'horizontal', 'inline'])) {
              throw new InvalidConfigException('Invalid layout type: ' . $this->layout);
          }
  
          if ($this->layout !== 'default') {
              Html::addCssClass($this->options, 'form-' . $this->layout);
          }
          parent::init();
      }
  
      /**
       * @inheritdoc
       * @return ActiveField the created ActiveField object
       */
      public function field($model, $attribute, $options = [])
      {
          return parent::field($model, $attribute, $options);
      }
  }