Rendering widoku częściowego zawierającego fragment formularza

Witam,

czy jest możliwość, aby w głównym widoku, który otwiera i zamyka active-form, renderować partial view za pośrednictwem kontrolera, z którym kontaktuje się AJAX?

Chodzi mi konkretnie o to, że widok "create.php" zawiera pewne części formularza, kolejny "krok" (tzn. odpowiedni partial view) jest ładowany w zależności od uprzednio wprowadzonych danych, ale cały czas wszystko składa się na jeden formularz. Jest taka opcja?

Zależy jakie dane chcesz wprowadzać (tekst w input, checkbox itp) ale generelanie tym zajmuje się javascript.

Nie wiem czy to Ci pomoże ale

Tutaj np masz listę wyboru która jeżeli wybierze się opcję 2 to pokazuje się sekcja z wyborem (drugi kod).


<?=Html::activeRadioList($model, 'room', [

	0 => 'Zarezerwuję pokój we własnym zakresie',

	1 => 'Rezerwuj pokój jednoosobowy w terminie 2 — 5 czerwca (3 noce)',

	2 => 'Rezerwuj pokój dwuosobowy w terminie 2 — 5 czerwca (3 noce), imię i nazwisko osoby towarzyszącej'

	],

	

	[

        'item' => function ($index, $label, $name, $checked, $value) {

		if ($value == 2) 

		{return '<label>' . Html::radio($name, $checked, ['value'  => $value, 'onclick' => "document.getElementById('see_notsee').style.display = this.checked ? 'block' : 'none'"]) . $label . '</label>';}

           else 

		   {return '<label>' . Html::radio($name, $checked, ['value'  => $value, 'onclick' => "document.getElementById('see_notsee').style.display = this.checked ? 'none' : 'block'"]) . $label . '</label>';}

        }

    ])?>

Najważniejsze to element :


'onclick' => "document.getElementById('see_notsee').style.display = this.checked ? 'none' : 'block'"]) . $label . '</label>'

Który pokazuje lub ukrywa pewne elementy formularza.


<div class="row" id="see_notsee" style="display: none">

	<div class="col-md-6"><?= $form->field($model, 'room_person_firstname') ?></div> 

	<div class="col-md-6"><?= $form->field($model, 'room_person_lastname') ?></div>

</div>

Dodatkowo trzeba pobawić się scenerio() jeżeli w rożnych wypadkach model ma walidować różne dane.

Rozwiązanie to to tak formularz wertykalny, jeżeli potrzebujesz rozwiązania horyzontalnego (kilka etapów) to musisz poszukać jakiegoś rozwiązania na necie bo wydaje mi się że yii nie ma gotowej biblioteki

Tutaj jest jakiś przykład

Multi Step Form

A tutaj masz przykład na bootstrap łatwiej Ci to będzie zintegrować jeżeli działasz na Yii2

W moim odczuciu kontroler przyjmował by tylko dane a skrypt ajax/javascript przerzucał by etapy też w jednym widoku. Oraz formularz wertykalny jest łątwiejszy w implementacji, póżniejszej walidacji wprowadzanych danych oraz w użytkowaniu przez userów