Problém s redirectem jen v IE

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

Zdravím,

narazil jsem na zahadny problem a nevim, jak na nej. Prosim o pomoc.

Mam dva formulare vedle sebe. Po kliknuti na urcite odesilaci tlacitko formu se dle podminky ve zpracovani zavola metoda a nastavi flash a redirectne zpet. Na druhem puvodnim formu, vse OK.

Plan byl premistit tlacitko do formu nad.(to ten test) a tam to proste nefunguje.

Podminka se splni, metoda zavola a provede, ale misto presmerovani IE visi dalsi minutu, pak presmeruje, ale bez flashmessage.

Tedy v prvnim formu to trva o minutu dele a redirect je bez flashe.

Jo pokud zakomentuju v prvnim formu volani one metody generateData(), tak se to presmeruje v poradku.

Netusi nebo nevidi nekdo, jaky je rozdim v prvnim a druhem formu?

Jo a Mozzila to nedela.. ta projede v poho.. chapal bych to, ale proc to IE dela jen v prvnim formu.

Diky a tady je kod:

Tedy prvni form, tlacitko test vola generateData() a nefunguje redirect a flashmsg,
druhy, tlacitko generate vola generateData() a funguje jak ma.

protected function createComponentYear($name) {
	$form = new Form($this, $name);

	$form->addGroup('Výnosy ze správy')
		->setOption('container', Nette\Utils\Html::el('fieldset')->class("green"));
	$form->addSelect('year', 'Rok:', $this->getYears(1))
		->setDefaultValue(date('Y'))
		->setPrompt('Zvolte rok')
		->setRequired('Zvolte rok');

	$form->addSubmit('celkem', "Roční přehled\nvýnosů - celkem");
	$form->addSubmit('obecni', "Roční přehled\nvýnosů - Obecní");
	$form->addSubmit('soukrome', "Roční přehled\nvýnosů - Soukromé");

	$form->addSubmit('dluhy', "Roční přehled\npohledávek")
		->getControlPrototype()->style(array('width' => '115px', "background" => 'lightgreen'));

	$form->addSubmit('test', "TEST");

	$form->onSuccess[] = array($this, "yearSubmit");
}

    function yearSubmit($form) {

	$values = $form->values;

	if ($form['celkem']->isSubmittedBy()) {
	    ...
	} elseif ($form['obecni']->isSubmittedBy()) {
	    ...
	} elseif ($form['soukrome']->isSubmittedBy()) {
	    ...
	} elseif ($form['dluhy']->isSubmittedBy()) {
	    ...
	} elseif ($form['test']->isSubmittedBy()) {
	    $this->context->invoicesModel->generateData($values->year);     // pokud toto zakomentuju, redirect projede OK.
	    $this->flashMessage('Generování dokončeno 2 ');
	    $this->redirect('this', (array) $values);
	} else {
	    $this->redirect('this', (array) $values);
	}

	 $this->year = $values->year;
    }

    protected function createComponentImport($name) {
	$form = new Form($this, $name);

	$form->addGroup('Import z MRP')
		->setOption('container', Nette\Utils\Html::el('fieldset')->class("red"));
	$form->addSelect('year', 'Rok:', $this->getYears(1))
		->setDefaultValue(date('Y'))
		->setPrompt('Zvolte rok')
		->setRequired('Zvolte rok');
	$form->addSelect('source', 'Zdroj:', $this->getSources())
		->setPrompt('Zvolte zdroj dávky')
		->setRequired('Zvolte zdroj');
	$form->addUpload('file');

	$form->addSubmit('import', "Spustit import")
			->getControlPrototype()->data['confirm'] = ("Import bude proveden pro zadaný rok a zdroj !\n");

	$form->addSubmit('generate', "Generovat výnosy pro zadany rok");

	$form->onSuccess[] = array($this, "importSubmit");
    }


    function importSubmit($form) {

	$values = $form->values;

	if ($form['import']->isSubmittedBy() AND $values->file->size > 0) {

	    ... // prace se souborem

	    $this->redirect('this');
	} elseif ($form['generate']->isSubmittedBy()) {
	    $this->context->invoicesModel->generateData($values->year);   //projede vzdy i s redirectem
	    $this->flashMessage('Generování dokončeno');
	    $this->redirect('this', (array) $values);
	} else {
	    $this->flashMessage('Nestalo se nic ...');
	    $this->redirect('this', (array) $values);
	}
    }
MW
Člen | 626
+
0
-

Asi jsem na to prisel !?

Pokud pridam do prvniho formu addUpload, tak to funguje.

Tedy, prida to k formu enctype=„multipart/form-data“ a IE akceptuje delsi zpracovanu formu?

Napada Vas nekoho proc to tam IE musi mit?
A jak pridam samotne enctype=„multipart/form-data“ k formu, prosim.

Diky !

enumag
Člen | 2118
+
0
-

Nic jednoduššího než se podívat jak to dělá ten upload control. ;-)

MW
Člen | 626
+
0
-

Diky… ;)

Nic mene, pridani pouheho enctype=„multipart/form-data“ nepomohlo…
Musim tam vazne dat addUpoad a pak to projde… nechapu tohle chovani IE …

enumag
Člen | 2118
+
0
-

Jaká verze IE? Nemáš zapnutej quirks mod nebo něco? Zkoušels to na jiném počítači?

MW
Člen | 626
+
0
-

Jine pc, stejne chovani.
IE 9.
Script trva cca 40 vteřin. Pokud tam neni uoload, provede se take do 40 vterin (poznam podle databaze a vytvari to jeste log, takze to je ok) ale IE jeste ceka cca minitu. Pak se presmeruje bez flasmsg… napada me, jestli nedojde ke ztrate session.

Ale ten addUpload to fakt vyresi :D

Ted jsem to udelal pres ajax… ale stejne by me zajimalo, co to je za problem.

Diky !

enumag
Člen | 2118
+
0
-

Tohle je fakt prapodivný. :-D Nenapadá mne důvod proč IE takhle blbne.

Pokud jde o flash msg tak ta se nezobrazuje prostě proto že se ukládá do session s platností několik vteřin. Po minutě tedy už dávno není platná. Tzn. to mi připadá v pořádku.

MW
Člen | 626
+
0
-

Aha, tak aspon neco chapu :-)

I kdyz to krokuju, tak se dokrokuju nakonec… a IE porad cumi …

Ale proc to vyresi ten addUpload :D