Přidání obrázku mezi formulář

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

Zdravím,

Potřeboval bych vložit mezi formulář html element obrázek, ale vůbec nevím jak na to.

	$form->addGroup(contact_data);
	$form->addText('jmeno', name)
		->setValue($a1['jmeno'])
		->addRule(NForm::FILLED, 'Vyplňte prosím Vaše jméno.');
	$form->addText('prijmeni', lastname)
		->setValue($a1['prijmeni'])
		->addRule(NForm::FILLED, 'Vyplňte prosím Vaše příjmení.');

//ZDE BYCH POTREBOVAL VLOZIT OBRAZEK

	$form->addText('email', 'Email')
		->setValue($a1['email'])
		->addRule(NForm::FILLED, 'Vyplňte prosím email.')
		->addCondition(NForm::FILLED)
			->addRule(NForm::EMAIL, 'Zadejte prosím platný email!');
	$form->addText('telefon', telefon)
		->setValue($a1['telefon'])
		->addRule(NForm::FILLED, 'Vyplňte prosím Váš telefon.');

Poraďte prosím jak na to.

na1k
Člen | 288
+
0
-

Šel bych cestou manuálního renderování ;-)

toka
Člen | 253
+
0
-

A nebo podědit AppForm a dopsat si vlastní metodu, nebo to udělat následovně, což zaručí výsledek, ale není to moc optimální:

$form->addButton('image', NULL);
$image = $form['image']->getControlPrototype();
$image->setName('span');
$image->setHtml(Html::el('img')->src('...'));

Generuje:

<span type="button" name="image" id="frmformLogin-image"><img src="..." /></span>

Určitě by si s tím šlo ještě pohrát, aby se výstup vylepšil :-)

eC
Člen | 9
+
0
-

dik toka, mne to tiez moc pomohlo, sice riesim trosku iny problem, no toto mi pomohlo najst riesenie :)

len by som sa chcel este opytat, ci nevies poradit, ked chcem dat este tomu obrazku funkciu, aby po kliknuti sa spustila jedna metoda…

nieco podobne ako na tlacitko „ok“ na ktore mam

$form->addSubmit("s", "Ok")
      ->onClick[] = array($this, "submitMapForm");

len to neviem aplikovat podobne na button, nevies mi s tym poradit ?

//edit… premyslal som nad moznym riesenim, zeby som to tvojou cestou uzatvaral do hrefu, len mi to prislo uz hrozne asi zbytocne dlhe… a neviem ako by som nastavil download (nenechavat to na browser ci to downloadne alebo otvori (jedna sa o pdf)) neexistuje kvalitnejsia a prehladnejsia cesta ?

Editoval eC (12. 7. 2010 14:56)

toka
Člen | 253
+
0
-

Hmm, nevím :-) Jedině přes AdvancedSubmit Button, tím by to teoreticky mělo jít.

eC
Člen | 9
+
0
-

no tak z toho som uplne rozhodeny … :D .. .skusal som to nieco .. ale neviem sa z toho nejako vymotat … nie som este natolko v tom zabehany aby som to dal dokopy nejak.. :D

nechal som to normalne cez ten href…

$form->addButton('image', NULL);
$image = $form['image']->getControlPrototype();
$image->setName('a');
$image->style = "display: none;";
$image->href = "...";
$image->setHtml(Html::el('img')->src("..."));

po stlaceni ho nechavam zobrazit.. je to mozno trosku „newbie“ ale inac to neviem pozliepat :(

diky za rady :)

Editoval eC (12. 7. 2010 15:30)

toka
Člen | 253
+
0
-

Řešil bych to přes ten AdvancedSubmit Button.

Např. do components bych nahrál obsah BaseForm.php a AdvancedSubmitButton.php a formulář upravil následovně:

protected function createComponentForm() {
  $form = new BaseForm;

  $form->addAdvSubmit('image', NULL, '...');

  return $form;
}

A pak upravit CSS např. takto:

.hasCaptionAndIcon {
  border: solid #000 0px;
  background: #fff;
}

Výsledkem je klikací obrázek bez okrajů na bílém pozadí (pokud máš pozadí stránky bílé) a tím pádem není samotné tlačítko vidět. Není vidět ani efekt stisknutého tlačítka při stisku ;-)

Editoval toka (12. 7. 2010 16:31)

raia
Člen | 25
+
0
-

toka napsal(a):

A nebo podědit AppForm a dopsat si vlastní metodu, nebo to udělat následovně …

A nedá se nějak přidat komponenta?

např.

$form->addComponent(new \MyImage, 'image');

by vypadala nějak takto?

class MyImage extends Control {
	public function render() {
		echo Html::el('img');
	}
}

Teď si s tím nějakou chvíli hraji a nedaří se mi najít způsob, jak tuto komponentu v rámci formuláře vykreslit. Opomenul jsem na něco?

Editoval raia (19. 7. 2010 14:55)