kartik_formularz
To jest stara wersja strony!
Spis treści
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.1704456420.txt.gz · ostatnio zmienione: 2024/09/15 16:22 (edycja zewnętrzna)