Narzędzia użytkownika

Narzędzia witryny


kartik_formularz

Kartik formularz

Szablon podstawowy

Zabezpieczenie przed podwójnym kliknięciem

<?php $form = ActiveForm::begin(['id' => 'form-create']); ?>
 
 
 
<div class="form-group  float-right">
    <span id="spin1" class="btn btn-outline-secondary"><i class="fas fa-spinner fa-spin"></i></span>
    <?= Html::submitButton('Zapisuję się', ['class' => 'btn btn-success','id'=>'sub' ]) ?>
</div>
 
<?php ActiveForm::end(); ?>
 
<?php
$this->registerJs('
form = $("#form-create");
$("#spin1").hide();
$("#sub").on("click", function () {
    $(this).hide();
    $("#spin1").show();
});
$(form).on("afterValidate", function (event, messages, errorAttributes) {
    if (errorAttributes.length > 0) {
        $("#spin1").hide();
        $("#sub").show();
    }
}); 
$(window).keydown(function(event) {
        if((event.keyCode == 13) && !$(event.target).is("textarea")) {
            event.preventDefault();
            return false;
        }
    });
');

CKEditor - likwidacja błędu nieaktywnego pola w dialogu

Na końcu formularza

<?php
$this->registerJs("
    $(document).off('focusin.bs.modal');
    ");

W widoku

use kartik\form\ActiveForm;

Szkielet podstawowy

 <?php $form = ActiveForm::begin(); ?>
 ... pola
 <?php ActiveForm::end(); ?>

input text

<?= $form->field($model, 'krok')->textInput(['maxlength' => true]) ?>

Text area

<?= $form->field($model, 'tekst')->textarea(['rows' => '8']) ?>

lista rozwijana

$etapy = ['1'=>'Etap 1','2'=>Etap 2];
<?=
 $form->field($model, 'etap')->dropDownList($etapy, [
       'prompt' => ''
     ])
?> 

Data

use kartik\date\DatePicker;
 
...
 
$form->field($model, 'data_rozpoczecia')->widget(DatePicker::classname(), [
            'options' => ['placeholder' => 'Data ...'],
            'pluginOptions' => [
                'autoclose' => true,
                'format' => 'yyyy-mm-dd'
            ]
        ])->label('Data rozpoczęcia');

Wybór dat z podanego zakresu

$form->field($model, 'data_waznosci')->widget(DatePicker::classname(), [
    'options' => ['placeholder' => 'Data ...'],
    'pluginOptions' => [
        'autoclose' => true,
        'format' => 'yyyy-mm-dd',
        'startDate' => '2023-07-10',
        'endDate' => '2023-07-20',
        ]
])

Przycisk Submit

<?= Html::submitButton('Zapisz', ['class' => 'btn btn-success']) ?>

Radio

 <?= $form->field($model, 'aktywne')->radioButtonGroup(['1' => 'Tak', '0' => 'Nie'], 
        ['class' => 'btn-group-sm',]) 
 ?>

Lista wyboru - autouzupełnianie

use kartik\select2\Select2
 
 
echo $form->field($model, 'uzytkownik')->widget(Select2::classname(), [
    'data' => $data,
    'options' => ['placeholder' => 'Wybierz użytkownika'],
    'pluginOptions' => [
        'allowClear' => true
    ],
]);

Append i prepend w polu

 <?=
    $form->field($model, 'czas_zajecia', [
      'addon' => [
        'prepend' => ['content' => '$', 'options' => ['class' => 'alert-success']],
        'append' => ['content' => '.00', 'options' => ['style' => 'font-family: Monaco, Consolas']],
            ]
        ])
  ?>

Pole Hidden

$form->field($model, 'hidden1')->hiddenInput(['value'=> $value])->label(false);

Radio button

use kartik\form\ActiveForm;
 
$form = ActiveForm::begin(); 
$data = [0 => 'Sun', 1 => 'Mon', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'Sat'];
 
// Simple basic usage
echo $form->field($model, 'weekdays1')->radioButtonGroup($data);?>
 
$model->weekdays2 = 1;
// Change button group size, button styles, and preselect 'Mon'
echo $form->field($model, 'weekdays2')->radioButtonGroup($data, [
    'class' => 'btn-group-sm',
    'itemOptions' => ['labelOptions' => ['class' => 'btn btn-warning']]
]);
 
// Advanced usage - Disable selected radios (e.g. 'Sun' & 'Sat')
echo $form->field($model, 'weekdays3')->radioButtonGroup($data, ['disabledItems'=>[0, 6]]);
ActiveForm::end();

Przygotowanie listy rozwijanej

Model

use yii\helpers\ArrayHelper;
...
 
    /**
     * Zwraca tabelę elementów dla formularzy
     * @return array
     */
    public function listaForm() {
        $model = static::find()
                ->where(['aktywne' => 1])
                ->asArray()
                ->all();
        return ArrayHelper::map($model, 'id', 'nazwa');
    }
 
    /**
     * Zwraca tabelę elementów dla formularzy wersja 2
     * @return array
     */
    public function listaForm() {
        $model = static::find()
                ->where(['aktywne' => 1])
                ->all();
        $lista = [];
        foreach($model as $element){
         $lista[$element->id] = $element->nazwa;
        }
        return $lista;
    }

Controller

public function actionCreate() {
        $model = new Specjalnosci();
        $model->aktywne = 1;
 
        if ($model->load(Yii::$app->request->post())) {
                   $model->save();
            }
            return $this->redirect(['index']);
        } else {
            return $this->render('create', [
                        'model' => $model,
                        'kierunki' => Kierunki::listaForm()
            ]);
        }
    }

Formularz

<?=
 $form->field($model, 'id_kierunki')->dropDownList($kierunki, [
       'prompt' => ''
     ])
?> 

CSS formularz skondensowany

<?php
$this->registerCSS('
 
    .help-block-error{
        color:red;
        font-size:smaller;
    }
    label{
        margin-bottom:0px;
 
        font-style: italic;
        color: #555555
    }
        .hasDatepicker{
        padding: 6px;
    }
    .form-control, .form-group, input{
        padding:3px;margin:0px;
 
    }
    label {
        font-size:0.8rem
    }
    input, .form-control,.input-group-prepend{
    height:28px;
    }
 
    ');
kartik_formularz.txt · ostatnio zmienione: 2024/09/15 16:22 przez 127.0.0.1