Ztrata parametru pri odeslani formulare

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

Zdravim

1. Mam formuluar s URL
/www/?id_individual_state=596920&action=detail&presenter=Results%3ADefault
(ten odkaz generuje DataGrid)

Pri odeslani formulare se me URL zmeni na
/www/?action=detail&do=detailForm-submit&presenter=Results%3ADefault
cili vypadne id_individual_state, jak tomu zabranim?

v presneteru je

<?php
	protected function createComponentDetailForm($name) {
		$form = new AppForm();
		...
		$form->addSubmit('Redraw', 'Redraw graph');
		$form->onSubmit[] = array($this, 'detailFormSubmitted');
		return $form;
	}

?>

v sablone

<?php
{extends "Default.default.phtml"}

{block #content}
		Here be results
		{control detailForm}
		<img src='{plink :Results:Default:detailimg, $sid}' alt='Graf funkce' />
{/block}
?>

2. jak muzu udelat input type=‚text‘ readonly ?

Klokan
Člen | 47
+
0
-

$this->addText(‚sleva‘, ‚Sleva na produkt‘)->getControlPrototype()->readonly = TRUE;

Tomu prvnímu moc nerozumím, zkus to popsat líp. Chápu o co Ti jde,ale ten popis je dost zmatený …

odin
Člen | 50
+
0
-

Diky, readonly funguje

ad 1) no mam formular, kteremu se predava parametr id_individual_state coz je zjednodusene IDcko zobrazeneho zaznamu a v okamziku kdy odeslu formular, tak ten parametr zmizi z adresy timpadem nevim s cim ve formulari pracuju. Proste jak udelam, aby v action formulare bylo to stejny URL jako ma ta stranka s formularem?

iguana007
Člen | 970
+
0
-

to jsem taky resil … ale ne v Nette … pomohlo jen hodit tyto parametry do hidden fields …
Pokud vim, tak v action by spravne mela byt jen cesta k skriptu.

igi

Editoval iguana007 (11. 12. 2009 18:32)

Davelister
Člen | 28
+
0
-

id_individual_state je perzistentni parametr?

Filip Procházka
Moderator | 4668
+
0
-

iguana007 napsal(a):

Pokud vim, tak v action by spravne mela byt jen cesta k skriptu.

To ano, ale pouze když je formulář method="get"

Editoval HosipLan (11. 12. 2009 18:39)

iguana007
Člen | 970
+
0
-

HosipLan napsal(a):

iguana007 napsal(a):

Pokud vim, tak v action by spravne mela byt jen cesta k skriptu.

To ano, ale pouze když je formulář method="get"

Spis kdyz tam je post ne? :)

Ostatne nevime, jak ten formular odesila – jestli GETem nebo POSTem, tedy alespon jsem si toho u prikladu vyse nevsimnul.

igi

odin
Člen | 50
+
0
-

mam stranku, ktera ma URL /sanaewi3/www/?id_individual_state=596920&action=detail&presenter=Results%3ADefault

ve strance mam nagenerovano
<form action="/sanaewi3/www/?action=detail&amp;do=detailForm-submit&amp;presenter=Results%3ADefault" method="post">

a chtel bych tam:
<form action="/sanaewi3/www/?id_individual=453243&amp;action=detail&amp;do=detailForm-submit&amp;presenter=Results%3ADefault" method="post">

persitstentni ten parametr neni (pokud se persistentni parametr ucrucje komentarem @persistent). Do hidden si to sice data muzu, ale to pak nejde ziskat ve startup() pres $this->getParam('id_individual_state')
Jen cesta ke skriptu tam byt nemuze, ja ten parametr potrebuju pro nacteni formulare a chci se vyhnout tomu, ze jednou to budu brat z formulare a jednou z adresy.

odin
Člen | 50
+
0
-

skoro stejna funkce je v prikladu akrabat
kdyz v seznamu alb na „edit“, tak se dostanu na URL
document_root/?id=2&action=edit
kde je formular, ktery kdyz odeslu tak se dostanu na URL
document_root/?id=2&action=edit&do=albumForm-submit

problem je v tom, ze v me aplikaci se ten paramer „id“ pri odeslani formulare ztrati (tedy negeneruje se do action formulare).

Filip Procházka
Moderator | 4668
+
0
-

iguana007 napsal(a):

Spis kdyz tam je post ne? :)

Když mám GET formulář tak mam jenom cestu ke scpritu, když mám POST mám celou URL i s GET požadavky. Tohle jsou fakt základy, buďto jsme se těžce nepochopili, nebo máš hodně dobré mezery :)

iguana007 napsal(a):

alespon jsem si toho u prikladu vyse nevsimnul.

logicky když řeší parametry v action tak je to POST

odin napsal(a):

problem je v tom, ze v me aplikaci se ten paramer „id“ pri odeslani formulare ztrati (tedy
negeneruje se do action formulare).

Pokud ho dáš jako perzistentní, tak ti na 100% nezmizí.

Teď se dívám jak to tady mám řešené já a myslím si že pokud ten parametr napíšeš do té render metody čili

public function render<view_s_formularem>($id_individual_state){
	// ...
}

tak si myslím že by se ti taky ztratit neměl

Editoval HosipLan (13. 12. 2009 15:05)

odin
Člen | 50
+
0
-

diky, to je ono
reseni je skutecne pridani parametru $id_individual_state do render metody

<?php
	public function renderDetail($id_individual_state) {
		parent::renderDefault();
		...
	}
?>

vubec jsem ten parametr nemel, protoze me tam k nicemu neni (potrebuju ho v createcomponent), takze me nenapadlo, ze to je dulezite