我试图在我的Zend Project(v.1.1.12)中创建一个简单的简报订阅表单
此表单将显示在我的index.phtml中。
这是我到目前为止所做的事情: 我在文件夹application / form /
中声明了一个名为Newsletter.php的新表单它是一个带有提交按钮的简单文本字段
class Form_Newsletter extends Zend_Form
{
public function init()
{
$this->setName('newsletter_subscribe');
$this->setMethod('post');
$u_email = new Zend_Form_Element_Text('nl_email');
$u_email->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress') ;
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton2');
$submit->setAttrib('class', 'btn');
$this->addElements(array($u_email,$submit));
}
}
下一步,在我的IndexController.php(在application / Controllers下),我声明了我的表单:
public function indexAction()
{
//$this->_helper->layout()->setLayout('simplecontent');
$db=new Db();
/*Newsletter*/
$form = new Form_Newsletter();
$form->submit->setLabel('Valider');
$this->view->newsletter_form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$email = $form->getValue('nl_email');
$db->runquery("insert into newsletterrecipients(email) values(".$email.")");
} else {
$form->populate($formData);
}
}
}
然后我在我的布局中渲染它:
<div class="newsletter">
<?php echo $this->newsletter_form; ?>
</div>
我想要的只是将提供的电子邮件插入名为&#39; newsletterrecipients&#39;的表中。但是当我提交表格时它没有用,没有记录数据。
感谢您的宝贵帮助
答案 0 :(得分:0)
第1步:
在application.ini
resources.db.adapter = pdo_mysql
resources.db.params.host = yourhostname
resources.db.params.username = yourusername
resources.db.params.password = yourpassword
resources.db.params.dbname = "yourdatabasename"
resources.db.isDefaultTableAdapter = true
第2步:
通过在此处扩展Zend_Db_Table_Abstract
来创建您的db-table类:
应用/模型/ DBTABLE / Newsletter.php
<?php
class Application_Model_DbTable_Newsletter extends Zend_Db_Table_Abstract {
protected $_name = 'your database table name';
}
?>
第3步:
现在,您可以在controller
:
$newsletter = new Application_Model_DbTable_Newsletter();
$row = $newsletter->createRow();
$row->email = $email;
$row->save();
这可能对你有所帮助。
答案 1 :(得分:0)
在Newsletter
文件夹中创建新文件Models
。
class Application_Model_Newsletter extends Zend_Db_Table_Abstract
{
protected $_name = 'newsletter'; //name of DB table
}
现在在indexAction
你可以使用:
$nModel = Application_Model_Newsletter();
if ($this->getRequest()->isPost()) {
if ($form->isValid($this->getRequest()->getPost())) {
$row = $nModel->createRow();
$row->email = $form->getValue('nl_email');
$row->save();
}
}