Ako vložiť do formulára čistý text?

Takeshi
Člen | 596
+
0
-

Ahojte,
ako vložím do nette formulára čístý text?

    $form = new Form;
    $form = ... tu chcem pridať len text bez akéhokoľvek inputu
    $form->addText('aaa1','asdfasdfasdfasdf'); vloží sa text a pole, kde mám niečo vložiť/ napísať,

Ďakujem

Editoval Takeshi (10. 5. 2023 12:44)

dakur
Člen | 493
+
0
-

A co to má být za text? Label? Vysvětlivka..?

Editoval dakur (10. 5. 2023 13:55)

Takeshi
Člen | 596
+
0
-

Čistý text … niečo ako

$form->addLabel('aa','bb');

{label aa}

**výsledok**:
bb
dakur
Člen | 493
+
+1
-

Na „něco jako“ se trochu těžko radí, chtělo by to konkrétní případ a ne abstraktní placeholdery – není z toho vidět záměr.

Z {label aa} usuzuju, že používáš ruční renderování (viz docs). Jaký je problém to napsat do šablony?

{form myForm}
  {label aa}

  výsledok:<br>
  {input aa}
{/form}

Editoval dakur (10. 5. 2023 13:55)

Takeshi
Člen | 596
+
0
-

No neviem. či to robím správnym spôsobom, ale snažím sa vytvoriť test,
kde budem vykresľovať v cykle 2D array. Jeden riadok bude obsahovať nasledovné údaje:

array1[0,0] = samotná otázka ⇒ toto chcem vykresliť ako label
array2[0,0–4] = odpovede, ktoré po každom cykle zamiešam ⇒ tieto odpovede dám a vykreslím do $form-addCheckbox(…)

SORRY rozmýšlam za chodu, tak v tom mám chaos

H0w4rd
Člen | 95
+
0
-

Vytvor si vlastni formularovy prvek.

Do Form pridej neco takoveho (bud vytvor potomka Form nebo pres extension methods):

    public function addLabel(string $name, $caption = NULL)
    {
        $component = new Label($caption);
        $this->addComponent($component, $name);
        return $component;
    }

Trida Label by mohla vypadat takhle:

<?php

namespace App\Control;

class Label extends \Nette\Forms\Controls\BaseControl
{
    public function getControl()
    {
        return "<div class='text'>{$this->getValue()}</div>";
    }
}
Takeshi
Člen | 596
+
0
-

no nakoniec som to urobil nasledovne:

vložil som text, ktorý som chcel vložiť do LABEL, predal som class, pri renderovani som pridal css:

Presenter>
$form->addText('label', 'text na zobrazenie')
     ->setAttribute("class='classLabel'");

CSS:
classLabel{
    display: none; => zobrazá sa mi len samotný Label
}

No možno to nie je ‚KOŠER‘, ale spĺňa to účel – najjednoduchšie riešenie.
Každopádne ďakujem za odpovede.

m.brecher
Generous Backer | 765
+
0
-

Ačkoliv je možné textová pole ve formulářích, třeba pokyny k vyplňování formuláře, vložit přímo do šablony, formulářový prvek TextBlock, který by pouze vypisoval vložený text, mě ve formulářích Nette také chybí. Pokud by zobrazení tohoto textu podléhalo nějakému logickému řízení, tak je určitě lepší mít řídící logiku v objektu formuláře než v šabloně.

Časem, až budou důležitější témata v Nette vychytaná, bychom jako komunita mohli popřemýšlet nad modernizací Nette formulářů. Mám doma pár tipů a jak si to v hlavě nějak urovnám, dal bych nějaký podnět do samostatného vlákna k diskuzi.