Přidání hodnoty do class při chybě formuláře

Webster.K
Člen | 192
+
0
-

Zdravím všechny, jde nějak zařídit, aby u formulářu, když se odešle ale na serveru dojde k nějakému problému (třeba DB, validace atd) a formulář se vráti to u konkrétního inputu třeba přidalo třídu? Momentálně to mám tak, že to vypíše všechny možné chyby co vznikli foreachem na konci formuláře. Potřeboval bych ale krom tohoto upozornění i přidat třídu, abych mohl začervenit to pole. Krom klasických formálářu, kde bych to asi nějak dokázal obejít používám i n:multiplier a tam už jsem celkem v koncích

 <div n:multiplier="multiplier" class="row">
      <div class="col-lg-5">
           <input n:name="nazev_nakladu" class="form-control" placeholder="např. Energie, plyn, voda">
      </div>
</div>

A právě za form-control bych potřeboval přidat třeba error třídu, nebo cokoliv, na co si dokáži chytit CSSko a pracovat s tím. Někdo nějaký nápad?

nightfish
Člen | 474
+
+3
-
<input n:name="nazev_nakladu" n:class="'form-control', $form['nazev_nakladu']->hasErrors() ? 'error'" placeholder="např. Energie, plyn, voda">
Webster.K
Člen | 192
+
0
-

nightfish napsal(a):

<input n:name="nazev_nakladu" n:class="'form-control', $form['nazev_nakladu']->hasErrors() ? 'error'" placeholder="např. Energie, plyn, voda">

Díky za odpověď, to ale právě nefunguje když používám multiplier. Když tam tohle právě dám, končím v chybě: Component with name ‚nazev_nakladu‘ does not exist

nightfish
Člen | 474
+
+1
-

@WebsterK Zmínku o multiplieru jsem prvně přehlédl. Na žádném projektu jej nepoužívám, takže vystřelím jen od boku po pohledu do zdrojového kódu:

<input n:name="nazev_nakladu" n:class="'form-control', $formContainer['nazev_nakladu']->hasErrors() ? 'error'" placeholder="např. Energie, plyn, voda">
Webster.K
Člen | 192
+
0
-

Ano, to je přesně to, co jsem hledal, děkuji :)

Editoval Webster.K (30. 7. 2023 22:00)

Webster.K
Člen | 192
+
0
-

Netušíte někdo, jak přidat class error přímo v presenteru místo v šabloně? Někde vypisuji formulář v šabloně jen jako: {control addNewForm} A hodilo by se mi to tam nějak procpat :)

jeremy
Člen | 50
+
0
-

Netušíte někdo, jak přidat class error přímo v presenteru místo v šabloně? Někde vypisuji formulář v šabloně jen jako: {control addNewForm} A hodilo by se mi to tam nějak procpat :)

Dokumentace: HTML Atributy

$form->addInteger('number', 'Číslo:')
	->setHtmlAttribute('class', 'big-number');

nebo

$form['number']->setHtmlAttribute('class', 'big-number');

Editoval jeremy (31. 7. 2023 2:46)

Ozzrel
Generous Backer | 51
+
0
-

Tuším že to dělá třída .has-error kterou v CSS můžeš nastavit dle potřeby.

Webster.K
Člen | 192
+
0
-

jeremy napsal(a):

Netušíte někdo, jak přidat class error přímo v presenteru místo v šabloně? Někde vypisuji formulář v šabloně jen jako: {control addNewForm} A hodilo by se mi to tam nějak procpat :)

Dokumentace: HTML Atributy

$form->addInteger('number', 'Číslo:')
	->setHtmlAttribute('class', 'big-number');

nebo

$form['number']->setHtmlAttribute('class', 'big-number');

Ano, toto vím, ale já bych právě potřeboval, že když vznikne při validaci na straně serveru chyba, tak že to sem vrátí přímo chybu. Teď to totiž dělám až v šabloně