'form-create']); ?>
= Html::submitButton('Zapisuję się', ['class' => 'btn btn-success','id'=>'sub' ]) ?>
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
registerJs("
$(document).off('focusin.bs.modal');
");
===== W widoku =====
use kartik\form\ActiveForm;
==== Szkielet podstawowy ====
... pola
==== 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 ====
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;
}
');