Problém s formůlářem s designem css

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

Dobrý den, mám kontaktní formulář a chtěl bych ho dosadit do html (css) designu.

V html

<form id="contacts-form" action="">
									<fieldset>
									<div class="field"><label>Your Name:</label><input type="text" value=""/></div>
									<div class="field"><label>Your E-mail:</label><input type="text" value=""/></div>
									<div class="field"><label>Your Website:</label><input type="text" value=""/></div>
									<div class="field"><label>Your Message:</label><textarea cols="1" rows="1"></textarea></div>
									<div class="alignright"><a href="#" onclick="document.getElementById('contacts-form').submit()">Send Your Message!<b></b></a></div>
									</fieldset>
								</form>

Úprava kodu:

<form id="contacts-form" action="">
									<fieldset>
			{widget contactForm}
									</fieldset>
								</form>

Formulář se vykreslí, ale nemá žádnou akci. Na foře jsem to nikde nenašel a nevěděl jsem jestli zařadit do kategorie formuláře, nebo Nette/Application mezi šablony.

Děkuji všem za rady.

Aurielle
Člen | 1281
+
0
-

Ty form a fieldset tagy tam nemají co dělat. Pokud chceš mít plnou kontrolu nad tím, co ti leze do šablony, použij manuální renderování.

zuhla
Člen | 33
+
0
-

Ale jak dát tedy formuláři design „contacts-form“ ?

Aurielle
Člen | 1281
+
0
-

$form->getControlPrototype()->id('contacts-form');

zuhla
Člen | 33
+
0
-

Přidal jsem to tam

public function createComponentContactForm()
    {
        $form = new AppForm();

        $form->addText('name','Jméno a příjmení')
             ->addRule(Form::FILLED, 'Musíte vyplnit jméno.');
        $form->addText('email','Váš e-mail')
             ->addRule(Form::EMAIL,'Zadejte platný email.');
        $form->addText('subject','Předmět')
             ->addRule(Form::FILLED,'Zadejte předmět zprávy.');
        $form->addTextArea('text','Zpráva')
             ->addRule(Form::FILLED,'Zadejte text zprávy.');
        $form->addCaptcha('captcha')
             ->addRule(Form::FILLED, "Rewrite text from image.")
             ->addRule($form["captcha"]->getValidator(), 'Try it again.')
             ->setFontSize(25)
             ->setLength(10) //word length
             ->setTextMargin(20) //px, set text margin on left and rigth side
             ->setTextColor(Image::rgb(0,0,0)) //array("red" => 0-255, "green" => 0-255, "blue" => 0-255)
             ->setBackgroundColor(Image::rgb(240,240,240)) //array("red" => 0-255, "green" => 0-255, "blue" => 0-255)
             ->setImageHeight(50) //px, if not set (0), image height will be generated by font size
             ->setImageWidth(0) //px, if not set (0), image width will be generated by font size
             ->setExpire(10) //ms, set expiration time to seession
             ->setFilterSmooth(false) //int or false (disable)
             ->setFilterContrast(false);  //int or false (disable);
        $form->getControlPrototype()->id('contacts-form');
        $form->addSubmit('send','Odeslat');
        $form->addSubmit('cancel','Zrušit');

        $form->onSubmit [] = array ($this, 'send');

        return $form;
    }

Ale hodí to chybu:

Call to undefined method AppForm::getControlPrototype().

redhead
Člen | 1313
+
0
-

getElementPrototype()

getControlPrototype() resp. getLabelPrototype() jsou pro jednotlivé prvky.

Editoval redhead (19. 10. 2010 20:02)

zuhla
Člen | 33
+
0
-

Hodil jsem $form->getElementPrototype()->id(‚contacts-form‘); . Už nehodí chybu bohužel formulář má furt stejný design od nette, nedostal design s css.

Aurielle
Člen | 1281
+
0
-

@redhead, @zuhla: moje blbost, omlouvám se :/

zuhla
Člen | 33
+
0
-

Víte teda někdo jak na to?

Aurielle
Člen | 1281
+
0
-

Nevím od jaké revize, ale už celkem dlouho přidává Nette samo formulářům ID… takže zkus místo toho použít class, ta by měla být bezproblémová.