Autor Zpráva
novacek90
Profil
Ahoj,
začal jsem dělat objektově a mám takový problém.
Mám formulář, kde chci po jeho úspěšném odeslání aby se mi zobrazil jiný .tpl ale nevím, protože tak jak to mám teď řešené, tak mi to zobrazí dva .tpl soubory.

<?php
require_once '../lib/common.php';


$page = new Page;

try {
  $poptavka = new PoptavkaEdit;
} catch(Exception $e) {
  logErrorOrder('Poptavka: '.$e->getMessage());
}

if(!empty($_POST)) {
    try {
        
    $poptavka->setJmeno($_POST['jmeno']);
    $poptavka->setPrijmeni($_POST['prijmeni']);
    $poptavka->setTelefon($_POST['telefon']);
    $poptavka->setEmail($_POST['email']); 
    $poptavka->setAdresa($_POST['adresa']);    
    $poptavka->setPoznamka($_POST['poznamka']);
    $poptavka->setTypLemu($_POST['lem']);
    $poptavka->setUpravaLemu($_POST['uprava_lemu']);
    $poptavka->setBazen($_POST['bazen']);
    $poptavka->setVelikostA($_POST['velikost_a']);
    $poptavka->setVelikostB($_POST['velikost_b']);
    $poptavka->setVelikostC($_POST['velikost_c']);
    $poptavka->setVelikostD($_POST['velikost_d']);
    $poptavka->setSchody($_POST['schody']);
    $poptavka->setBarva($_POST['barva']);
    $poptavka->setDatum(date("Y-m-d H:i:s"));
    $poptavka->setModified('');
        $poptavka->setStatus(STATUS_NEW);
        $poptavka->setNewCisloPoptavky();
        
        $poptavka->store();
    
        // odkaz na třídu pro odeslání e-mailu?? v mymailer.class.php???
    // ANO !! :D
        // MyMailer::sendPoptavkaSupplier($poptavka);
        
        $page->assign("info",'Poptávka byla odeslána.');   // zobrazí v cenova-nabidka.tpl kde si to vytáhnu přes SMARTY
    $page->display("odeslano.tpl");  // po úspěšném odeslání zobraz odeslano.tpl a ne cenova-nabidka.tpl
        $poptavka = new PoptavkaEdit;
    } catch(Exception $e) {
      $page->assign("error",$e->getMessage());
    }
}

$page->assignTitle('Cenová nabídka');

// naplnime smarty udajema o poptávce
$poptavka_smarty['jmeno'] = $poptavka->outJmeno();
$poptavka_smarty['prijmeni'] = $poptavka->outPrijmeni();
$poptavka_smarty['telefon'] = $poptavka->outTelefon();
$poptavka_smarty['email'] = $poptavka->outEmail();
$poptavka_smarty['adresa'] = $poptavka->outAdresa();
$poptavka_smarty['poznamka'] = $poptavka->outPoznamka();
$poptavka_smarty['typ_lemu'] = $poptavka->outTypLemu();
$poptavka_smarty['uprava_lemu'] = $poptavka->outUpravaLemu();
$poptavka_smarty['bazen'] = $poptavka->outBazen();
$poptavka_smarty['velikost_a'] = $poptavka->outVelikostA();
$poptavka_smarty['velikost_b'] = $poptavka->outVelikostB();
$poptavka_smarty['velikost_c'] = $poptavka->outVelikostC();
$poptavka_smarty['velikost_d'] = $poptavka->outVelikostD();
$poptavka_smarty['schody'] = $poptavka->outSchody();
$poptavka_smarty['barva'] = $poptavka->outBarva();

$page->assign("poptavka",$poptavka_smarty);



switch($_GET["type"]) {
  case 'klasik': 
    $page->assignTitle("Cenová nabídka KLASIK");
  break;
  case 'klasik_dlouhy':
    $page->assignTitle("Cenová nabídka KLASIK dlouhý");
  break;
  case 'max':
    $page->assignTitle("Cenová nabídka MAX");
  break;
  case 'basic':
    $page->assignTitle("Cenová nabídka BASIC");
  break; 
}
$page->assign('type',$_GET["type"]);
$page->display("cenova-nabidka.tpl");  //stránka s formulářem

?>

Asi nemůžu mít použité dvakrát $page->display(""). Jinak chtěl bych to nějak vyřešit z důvodu SEO, aby mi formulář zůstával stále na jedné adrese.

Díky za rady
Kutil
Profil *
hm, "rychlé a hnusné" řešení by bylo:
- na řádek 6 přidej $isSuccesPage = false;
- za řádek 44 přidej $isSuccessPage = true;
- a místo řádku 88 dej if($isSuccessPage) { $page->display("cenova-nabidka.tpl"); } //stránka s formulářem

PS: k objektovému kódu tohle má daleko. Objektový kód neznamená, že začneš používat třídy, ale že aplikaci dáš vnitřní strukturu, rozdělíš zodpovědnost tříd a celé to deklarativně provážeš dohromady...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: