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?