Více formulářů Zend_Form v jednom controllers – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Více formulářů Zend_Form v jednom controllers – PHP – Fórum – Programujte.comVíce formulářů Zend_Form v jednom controllers – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
petrl0
Návštěvník
25. 6. 2008   #1
-
0
-

Ahoj, řeším tuto věc. Mám dva na pohled totožný formuláře, pro každý jiný models, ale používám je v jedné akci jednoho controllers a zobrazuji v jedno wievs, oba dohromadyl. Vše je ok, dokud nezmáčknu odeslat na jednom formulář, pak se mi odešle i ten druhý, i přesto že mám nastavené rozlišné proměné. Poradíte někdo?

Models SmsForm.php

<?php

class SmsForm extends Zend_Form{
public function __construct($options = null){
parent::__construct($options);
$this -> setName('Pošli SMS');

$id = new Zend_Form_Element_Hidden('id');

$od = new Zend_Form_Element_Text('od');
$od->setLabel('Od(Váš e-mail):')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress');

$zprava = new Zend_Form_Element_Textarea(array(
'name' => 'zprava',
'cols' => 20,
'rows' => 5));
$zprava->setLabel('Zpráva:')
->setRequired(true)
->addFilter('StringTrim')
->addValidator('NotEmpty');

$submit = new Zend_Form_Element_Submit('submitSMS');
$submit -> setAttrib('id', 'submitbuttonSms');

$this->addElements(array($id,$od,$zprava,$submit));
}
}
?>


Model EmailForm.php


<?php
class EmailForm extends Zend_Form{
public function __construct($options = null){
parent::__construct($options);
$this -> setName('Pošli SMS');

$id = new Zend_Form_Element_Hidden('id');

$od = new Zend_Form_Element_Text('od');
$od->setLabel('Od(váš e-mail):')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress');

$predmet = new Zend_Form_Element_Text('predmet');
$predmet->setLabel('Předmět:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');

$zprava = new Zend_Form_Element_Textarea(array(
'name' => 'zprava',
'cols' => 20,
'rows' => 5));
$zprava->setLabel('Zpráva:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');

$submit = new Zend_Form_Element_Submit('submit');
$submit -> setAttrib('id', 'submitbuttonEmail');

$this->addElements(array($id,$od,$predmet,$zprava,$submit));
}
}
?>

Controller KontaktController.php



<?php

class KontaktController extends Zend_Controller_Action
{
function indexAction()
{
$this->view->title = "Kontakt";

$sms = new SmsForm();
$sms -> submitSms -> setLabel('Poslat SMS');
$this ->view ->sms = $sms;

if($this -> _request -> isPost()){
$smsData = $this -> _request -> getPost();
if($sms -> isValid($smsData)){
$mail = new Zend_Mail();
$tr = new Zend_Mail_Transport_Smtp('smtp.ralsko.net');
Zend_Mail::setDefaultTransport($tr);
$mail->setBodyText($sms -> getValue(zprava));
$mail->setFrom($sms -> getValue(od), 'Some Sender');
$mail->addTo('plasmo@vodafonemail.cz', 'Some Recipient');
$mail->setSubject('SMS z plasmo.cz');
$mail->send();
$this -> _redirect('kontakt');
}else{
$sms -> populate($smsData);
}
}

$email = new EmailForm();
$email -> submitEmail -> setLabel('Poslat email');
$this ->view -> email = $email;

if($this -> _request -> isPost()){
$emailData = $this -> _request -> getPost();
if($email -> isValid($emailData)){
$mail = new Zend_Mail();
$tr = new Zend_Mail_Transport_Smtp('smtp.ralsko.net');
Zend_Mail::setDefaultTransport($tr);
$mail->setBodyText($email -> getValue(zprava));
$mail->setFrom($email -> getValue(od), 'Some Sender');
$mail->addTo('plasmo@email.cz', 'Some Recipient');
$mail->setSubject($email -> getValue(predmet));
$mail->send();
$this -> _redirect('kontakt');
}else{
$email -> populate($emailData);
}
}
}

}

?>


a views kontakt/index.php


<div id="text" >
<h2><span><?php echo $this->escape($this->title); ?></span></h2>
<p>
Tak v této sekci uvedu několik různých způsobů jak mě zkontaktovat. Máte několik možností: E-mail, Windows Live Messenger, Skype, ICQ.
</p>
<h3>Rychlé odeslání zprávy</h3>
<iframe src="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=ef157dd88e3fbc64@apps.messenger.live.com&mkt=cs-CZ&useTheme=true&foreColor=333333&backColor=DCF2E5&linkColor=333333&borderColor=8ED4AB&buttonForeColor=2C0034&buttonBackColor=CFE9D9&buttonBorderColor=8ED4AB&buttonDisabledColor=CFE9D9&headerForeColor=006629&headerBackColor=92D6AE&menuForeColor=006629&menuBackColor=FFFFFF&chatForeColor=333333&chatBackColor=F4FBF7&chatDisabledColor=F6F6F6&chatErrorColor=760502&chatLabelColor=6E6C6C" width="300" height="300" style="border: solid 1px black; width: 300px; height: 300px;" frameborder="0"></iframe>



<h3>Pro odeslání SMS</h3>
<? echo $this -> sms ?>


<h3>E-mail</h3>

<? echo $this -> email ?>
<p><a href="plasmo(zavináč)email(tečka)cz">plasmo(zavináč)email(tečka)cz</a></p>
<h3>Skype</h3>
<p>plasmosoft <a href="skype:plasmosoft?call"><img src="http://mystatus.skype.com/bigclassic/plasmosoft" title="My status" style="border: medium none ;" alt="My status" width="182" align="middle" height="44"></a></p>
<h3>ICQ</h3>
<p>384187165<img src="http://status.icq.com/online.gif?icq=384187165&img=21" alt="384187165"></p>
</div>



Neví někdo něco?

Nahlásit jako SPAM
IP: 82.150.166.–
Na fóru mě naleznete pod novým nickem => plasmo
Reklama
Reklama
greppi0
Stálý člen
8. 7. 2008   #2
-
0
-

V ZF niesom guru, cize neviem ci to pomoze, ale spracuvava ti to preto, ze na riadku 14 a 35 v Controlleri mas podmienku

$this -> _request -> isPost()
, a to vracia TRUE pre oba formualare aj ked je odoslany iba jeden.
Cize, controller riadok 14 na:


if($this -> _request -> isPost() &&
$this->getName == 'Pošli SMS'
){

takto nejako ries aj podmienku na riadku 35.

A to ze ti ich odosiela sucasne, je asi preto, ze pri oboch mas
$this -> setName('Pošli SMS')


Odporucam specialne pre ZF temy http://forum.zendframework.cz/ http://forum.zendframework.cz/

Nahlásit jako SPAM
IP: 195.91.80.–
You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you - Dale Carnegie
hrach
~ Redaktor
+1
Boss
8. 7. 2008   #3
-
0
-
Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 46 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý