Přidání vlastního textu(odkaz) do form
- Jakolcz
- Člen | 9
Dobrý den,
chtěl bych se zeptat, jak přidat vlastní text do formu? Například
hypertextový odkaz pod přihlašovací tlačítko.
protected function createComponentSignInForm()
{
$form = new UI\Form;
$form->addText('username', 'Už. jméno:')
->setRequired('Prosím zadejte uživatelské jméno.');
$form->addPassword('password', 'Heslo:')
->setRequired('Prosím zadejte heslo.');
$form->addCheckbox('remember', 'Zapamatovat na tomto počítači.');
$form->addSubmit('send', 'Přihlásit');
$form->onSuccess[] = callback($this, 'signInFormSubmitted');
return $form;
}
Editoval Jakolcz (11. 3. 2012 21:42)
- Tomáš Kolinger
- Člen | 136
Musíš upravit renderer a nebo použít manuální vykreslování – https://doc.nette.org/cs/forms#…
- llook
- Člen | 407
A nebo si přidat vlastní control:
class MyLinkControl extends \Nette\Forms\Controls\BaseControl
{
public function getControl()
{
return \Nette\Utils\Html::el('a', 'odkaz')->href('url');
}
}
$form = new Form;
$form->addText('...');
$form['a'] = new MyLinkControl;
$form->addSubmit('submit');
- Tomáš Votruba
- Moderator | 1114
Nejjednodušší je přidat html element do skupiny (bez ohledu na to, že přidat odkaz pod přihlašovací tlačítko, resp. konec formuláře, můžeš klasicky pod formulář v šabloně).
// use Nette\Utils\Html;
$myElement = Html::el("a", "link text")->href("somewhere")->class("positionMe");
$form = new Form;
$form->addGroup();
// some inputs
$form->addGroup()->setOption("description", $myElement);
// other inputs
EDIT: Oprava.
Editoval Schmutzka (12. 3. 2012 18:41)
- Jakolcz
- Člen | 9
V Nette jsem opravdu začátečník a nějak mi ten kód nefunguje.
protected function createComponentSignInForm()
{
$myElement = Nette\Utils\Html::el("a", "odkaz")->href("http://localhost");
$form = new UI\Form;
$form->addText('username', 'Už. jméno:')
->setRequired('Prosím zadejte uživatelské jméno.');
$form->addPassword('password', 'Heslo:')
->setRequired('Prosím zadejte heslo.');
$form->addCheckbox('remember', 'Zapamatovat na tomto počítači.');
$form->addSubmit('send', 'Přihlásit');
$form->addGroup()->setOption("description", $myElement);
$form->setCurrentGroup(NULL);
$form->onSuccess[] = callback($this, 'signInFormSubmitted');
return $form;
}
Pod formulář v šabloně se mi link vkládat nechce, kvůli rozhozenému formátování.
Editoval Jakolcz (12. 3. 2012 17:32)
- Tomáš Votruba
- Moderator | 1114
Jakolcz napsal(a):
Opraveno a vyzkoušeno. (Třídou si pak můžeš vypozicovat prvek dle libosti.)
- Tomáš Votruba
- Moderator | 1114
Jakolcz napsal(a):
Tak po upravení kódu se link pořád nevypisuje, i když přes
echo $form->groups[""]->options["description"];
se vypsat dá
Pokud přidáš skupinu na konec formuláře, musíš jí přidat i nějaké
prvky, jinak se nevypíše.
Dalo by se to obejít:
$form->addGroup()->setOption("description", $myElement);
$form->addHidden("test");
$form->onSuccess[] = callback($this, 'signInFormSubmitted');
return $form;
ale přesto mi přijde smysluplnější výše uvedený postup aplikovat jen na html MEZI prvky: