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: