Form vlastní vzhledz továrničky – vlastní vzhled

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
plkJack
Člen | 4
+
0
-

Zdravím potřeboval bych poradit začínám s nette, vytvořil sem si vlastní komponentu Formuláře ve které vytvářím formulář přez tovarničku:

a vypisuji ho do šablony té komponenty:

a chci se zeptat když bych chtěl upravit jak se bude formulář vykreslovat (uplně překopat vzhled), jak to mám udělat? četl jsem si v dokumentaci ale tam je to pro formuláře které nejsou vytvořeny přez tovarničku… děkuji za odpověď.

<?php
function createComponentLoginForm(){
		$form = new Nette\Application\UI\Form;
		$form->setMethod('POST');
		$form->addText('name', 'Jméno:')
			->setRequired('Zadejte jméno prosím.');
		$form->addPassword('password', 'Heslo:')
			->setRequired('Zadejte heslo prosím.')
			->addRule($form::MIN_LENGTH, 'Heslo musí mít alespoň 3 znaky', 3);
		$form->addSubmit('send', 'Login')
		     ->setAttribute('class', 'btn-classic');
		$form->onSuccess[] = $this->signInFormSubmitted;
		$form->getElementPrototype()->class[] = "loginForm";
		return $form;
}
?>
<?php
<div class="loginWrapper">
	{control loginForm}
</div>
?>
Jan Mikeš
Člen | 771
+
+1
-

Uplne stejnym zpusobem. Misto makra {control} pouzij makro {form} a vykresluj.

plkJack
Člen | 4
+
0
-

děkuji :), ještě dotaz nedal by se přimo k tomu formu připnout externí latte? že by zustalo v component latte ten {control loginForm} a vzhled formulaře by byl definovan v jinem latte souboru? (jen pro info)

Editoval plkJack (17. 1. 2015 18:44)

Jan Mikeš
Člen | 771
+
0
-

Jasne ze by slo. Bud si muzes vytvorit renderer, ktery ten formular bude vyuzivat a nastavit mu ho, nebo muzes cely formular obalit do komponenty a formular si vykreslis v sablone komponenty.

Navod jak na to naleznes zde: https://doc.nette.org/…s/form-reuse

plkJack
Člen | 4
+
0
-

Díky za odpověď , Druhá možnost se mi zdá o dost jednodušší :), za tutorial děkuji :)

webdata
Člen | 153
+
0
-

Odkud začít?

Tak snad že stránka Nette má v menu více položek než forum. A je zde také dokumentace kde se dá dočíst jak na to takže pak stačí podědit defaultní renderer a vytvořit si vlastní pro bootstrap from twitter a to tak že výsledný formulář nemusí být zavislej na bootstrap a to třeba takto:

$form = new \Nette\Application\UI\Form;

if (class_exists('\BootstrapFormRenderer')) {
	$form->setRenderer(new \BootstrapFormRenderer);
}

return $form;

A nebo je zde ještě další stránka a to Addons kde lze najít Kdyby/BootstrapFormRenderer

Pak ještě existuje stránka kterou provozuje jedna imperialistická firma ze západu. Kde se pak dá najít jak udělat znovupoužitelný formulář nesoucí vlastní šablonu

Jinak forum má jednu unikátní vlastnost a to vyhledávání kde se tohle už řešilo snad 1 000 000.

Nevím proč mám pocit že tazatel je stejná osoba pod jiným nickem pokud se pletu, tak se omlouvám.

Editoval webdata (17. 1. 2015 19:28)

plkJack
Člen | 4
+
0
-

Vím našel jsem jak upravit renderer ale zajmalo mě jestli neni ještě jiná metoda a já jsem na nette forum zavítal poprvé, zkoušel jsem vyhledávání ale nenašel jsem přimou a stručnou odpověď :) a to že mám podobný nick je jen shoda náhod nevím na co se daný uživatel ptal ale žádnou nedávnou odpověď na toto téma jsem nenašel.

webdata
Člen | 153
+
0
-

plkJack napsal(a):

Vím našel jsem jak upravit renderer ale zajmalo mě jestli neni ještě jiná metoda a já jsem na nette forum zavítal poprvé, zkoušel jsem vyhledávání ale nenašel jsem přimou a stručnou odpověď :) a to že mám podobný nick je jen shoda náhod nevím na co se daný uživatel ptal ale žádnou nedávnou odpověď na toto téma jsem nenašel.

Tak to se omlouvám. Je hodně cest, jak dosáhnou výsledku, já osobně používám formulář jako samostatnou komponentu popsanou v tutorialu co jsem dával odkaz a nebo ho dával Lexi.

Jelikož je hodně CSS frameworku je dobré si třeba kontrolovat zda zda se nachází můj renderer.

Já mám napsané komponenty jako například loginform, newpassword atd. Ty pak v daném projektu zaregistruju jako službu v neon a injektuju do požadovaného presenteru kde ji pak použiju.

Filip Procházka
Moderator | 4668
+
0
-

Dost často je potřeba renderovat ručně a to se dělá nejlépe takto:

<form n:name="loginForm">
	<label n:name="name">Jméno</label><input n:name="name"><br>
	<label n:name="password">Heslo</label><input n:name="password"><br>
	<input n:name="submit" value="Přihlásit se">
</form>