Przekazanie parametrów do akcji kontrolera bez modelu

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' => ' ']

        );