Sytuacja wygląda tak.
Mam kontroler a w nim akcję
public function actionFunkcja($aa, $bb)
W jaki sposób przekazać w yii2 do tych zmiennych wartości z formularza bez wykorzystania modelu?
Jak się odwołać poprzez submit do akcji kontrolera?
Sytuacja wygląda tak.
Mam kontroler a w nim akcję
public function actionFunkcja($aa, $bb)
W jaki sposób przekazać w yii2 do tych zmiennych wartości z formularza bez wykorzystania modelu?
Jak się odwołać poprzez submit do akcji kontrolera?
Bardzo łątwo ponieważ Yii2 ma wbudowaną obsługę GET dla kontrolerów
public function actionFunkcja($aa = 0, $bb)
{
// $bb == $_GET('bb');
$model = News::findOne($aa);
{
Wystarczy wpisać teraz w URL /controller/funkcja?aa=1&bb=cos, bo to już jest.
lub request
$request = Yii::$app->request;
$get = $request->get();
// equivalent to: $get = $_GET;
$zmienna = $request->get('aa');
Rozumiem, o to chodziło.
Pozwolę sobie tylko dopytać teraz o samą formę formularza?
Czy poniższe rozwiązanie jest prawidłowe dla requesta z form do akcji kontrolera?
Bo działać to działa
<?php
$form = ActiveForm::begin([
'id' => 'aa-id',
'options' => ['class' => 'form-horizontal'],
'method' => 'get',
'action' => ['/aa/aa'],
]);?>
<p>aa</p>
<select class="form-control" name="aa">
<?php
for($i = 1800;$i<=2299;$i++)
{
echo '<option>'.$i.'</option>';
}
?>
</select>
<p>bb</p>
<select class="form-control" name="bb">
<?php
for($i = 1800;$i<=2299;$i++)
{
echo '<option>'.$i.'</option>';
}
?>
</select>
<div class="form-group">
<div class="col-lg-offset-1 col-lg-11">
<?= Html::submitButton('Przekaż', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
</div>
</div>
<?php ActiveForm::end(); ?>
Czy takie połączenie Yii Framewok form z czystym html jest prawidłowe?
Używanie wbudowanych klas/metod do generowaniu formularza jest znacznie bardziej optymalne i wygodne.
Przemawia za tym chociażby walidacja z modelu, generowanie w przejrzyszty sposób opcji do pól wyboru itd…
Poniżej jakieś przykłady konstrukcji różnych form fieldów ( z użyciem widgetów itp… ).
<?= $form->field($model, 'files')->textInput() ?>
<?= $form->field( $model, 'clientId', $config )
->dropDownList( $model->getClientList(), ['prompt' => '' ] )
?>
$form->field( $model, 'projectStart', $config )->widget( DatePicker::className(), [
'dateFormat' => 'yyyy-MM-dd',
'options' =>
['class' => 'date-style', 'placeholder' => 'Project Start Date'],
'clientOptions' => [
'yearRange' => '-115:+0',
'changeYear' => true ]
] )
?>
$form->field( $projectPermissions, 'userId', ['template' => "<span class='checkbox'>{input}</span>" ] )
->checkboxList( $model->getConstructorList(), $options = ['separator' => ' ']
);