Mam tabelę zamówień i klientów, każde zamówenie przypisane do jednego klienta.
Robię właśnie formularz dodający zamówienie. Życzeniem zamawiającego jest, aby na jednym ekranie oprócz innych parametrów zamówienia można było wpisać dane klienta.
Powinna być możliwość wyszukiwania już istniejącego klienta w bazie jeśli wpiszemy część jego parametrów na tym samym ekranie.
Szkic formularza zamówienia
Opis zamówienia: …
– Klient —
Nazwa …
Telefon …
email …
Uwagi …
<Szukaj klienta>
Jeszcze o zamówieniu …
<Zapisz zamówienie>
Przycisk <Szukaj klienta> ma przeszukać tabelę klientów pod kątem wybranych, wpisanych parametrów i jeśli znajdzie dokładnie jeden rekord, to wypełnić odpowiednimi wartościami część formularza dot. klienta. I to ma być AJAX, bez przeładowywania reszty formularza. <Zapisz zamówienie> ma zapisywać zamówienie oraz klienta.
Nie mam problemu z kilkoma modelami na formularzu ale utknąłem na AJAX-ie. Zastosować ajaxSubmitButton czy też ajaxButton? Jak odświeżać formularz po uzupełnieniu? renderPartial? Jesli tak, to jak przekazać $model i $form do obsługi AJAX-a w kontrolerze? Czy da się to w ogółe zrobić bez pisania kodu po stronie klienta? Strasznie długo to schodzi, błądzę i pomyślałem, że może ktoś ma gotowca (szkielet) i się podzieli? Problem wydaje się być typowy dla aplikacji biznesowych.
Tak obecnie robię, korzystam z ajaxSubmitButton, a po udanym wyszukiwaniu wypełniam pola klienta za pomocą JS, wcześniej atrybuty wyszukanego rekordu przesyłająć JSON’em. Ile mi to czasu zajęło, to lepiej nie pisać. Wolałbym to robić po stronie serwera, za pomocą renderPartial i klauzuli update w wywołaniu AJAX. Dlaczego? O tym później. Niestety nie wiem jak do widoku “partialnego” przekazać $form z kontrolera (akcji obsługującej AJAX). W widoku mam: