Symfony - formularz dla każdej jednostki na jednej stronie.

0

Jak powinienem rozwiązać z wykorzystaniem Symfony 4 umieszczenie przy każdej jednostce inputu, w który można wpisać tytuł notatki oraz przycisku, który po naciśnięciu miałby uruchamiać funkcję w kontrolerze do generowania adresu URL dla danej notatki, z określonym tytułem?
Czyli mam 10 notatek, a przy każdej z niej (na dole) widnieje input "title" oraz przycisk "Share" - najlepiej chyba jakby to był formularz dla każdej notatki, ale jednak czy jest to dobre rozwiązanie? I w ogóle jak wykorzystać taki 1 formularz dla każdej notatki? Bo w dokumentacji Symfony widnieje tylko wytłumaczenie jak utworzyć formularz dla jednego "modelu, a nie wielu na jednej stronie, tak jak potrzebuję. Formularzu poprzez Symfony Form utworzonego nie bardzo mogę wrzucić w pętlę w Twigu, bo wywala błędy, że odwołuję się do tablicy notatek, a nie jednego modelu, tak jak w dokumentacji jest.

Bo w przypadku opcji EDIT czy DELETE - łatwo można dodać odnośnik z odpowiednim routem, a tutaj nie da rady dać tego jako a href, bo musi byc ten input uzupełniony przez usera pobrany przy kliknięciu submitu. Jeszcze by się tak dało, ale wtedy jak znowu przechować ID notatki - input hidden? Ktoś zmieni value i wyśle zmiany dla innej notatki, niż trzeba...
Możecie zarzucić jakimś linkiem, gdzie jest podobne rozwiązanie, jeśli macie coś takiego ;)

0
666piter napisał(a):

input hidden? Ktoś zmieni value i wyśle zmiany dla innej notatki, niż trzeba...

Jeśli to front decyduje o tym którą notatkę edytujesz, to niestety nie ma na to rady. Nie ważne czy query param, taki hidden, pole w body, doesn't matter. Zawsze, jak ktoś się uprze, będzie mógł wysłać id jaki będzie chciał.

1

Jako, że to mój pierwszy wpis na forum to ogólne "dzień dobry".
Możesz na stronie umieścić dowolną liczbę formularzy, ja to zrobiłbym tak:

Kontroler

//pobranie 10 rekordów notatek
$items = $this->getDoctrine->getRepository('zapytanie');
$forms = array();
//każdy rekord ma swój formularz
foreach($items as $item){
	$forms[] = $this->createForm(MyEntityForm::class, $item)->createView();
}
return $this->render('my_template.html.twig', array (
	'forms'=> $forms,
);

Widok

{% for form in forms %}
        {{ form_start(form) }}
        {{ form_widget(form) }}
        {{ form_end(form) }}
{% endfor %}

Co do drugiej części to nie za bardzo rozumiem. Te notatki są tworzone czy edytowane? Generowany link jest tworzony dynamicznie w zależności od danych użytkownika z inputa?

1 użytkowników online, w tym zalogowanych: 0, gości: 1