我有一个小表单,用户可以订阅我的简报。 如何将布局中的电子邮件地址传递给控制器?
我的布局名称是Footer.phtml,这里是代码:
<div id="subscribe">
<form name="newsletterRegister" method="post" action="">
<span>Subscribe to the Newsletter</span>
<input class="subscribeNewsletter" name="email" type="text">
<input id="subscribe_ok" type="image" src="/www/assets/newImages/footer/Ok.png" value="">
</form>
</div>
我有一个名为NewsletterController.php的控制器
我有点迷失Zend Framework,有谁能帮我搞清楚我要做什么?
答案 0 :(得分:3)
好好改变这个
<form name="newsletterRegister" method="post" action="">
到此
<form name="newsletterRegister" method="post" action="NewsletterController/YOURACTION">
在您的控制器中只需获取此类数据
$request = $this->getRequest();
$request->getPost()
答案 1 :(得分:0)
如果表单的操作为空,则会自行发布。
但是如果发送新闻通讯,也许你不想查看每一页。
尝试使用控制器插件,检查输入字段的请求对象,将其命名为唯一,如 email_newsletter ,如果不为空,请执行您的逻辑。
文件:application / plugins / Newsletter.php
class Application_Plugin_Newsletter extends Zend_Controller_Plugin_Abstract {
//before dispatching starts
public function preDispatch(Zend_Controller_Request_Abstract $request) {
$email = $request->getParam('email_newsletter',NULL);
if(!is_null($mail)) {
//check if is valid
if(Zend_Validate::is($email,'')) {
//do your logic
}
else {
//set some error messages
//maybe use helper flashMessenger
}
}
}
}
文件:Bootrap.php
protected function _initPlugins() {
$this->bootstrap('frontController');
//Get FrontController Instance
$frontController = $this->getResource('frontController');
$frontController->registerPlugin(new Application_Plugin_Newsletter());
return $frontController;
}
或强>
设置类似'/ newsletter / subscribe'的表单操作。 然后在控制器'newsletter'动作'订阅'中检查表单并重定向到发送页面。
也许您应该像访问会话的最后一页一样存储,或者在该新闻稿表单中添加隐藏的输入,表示在完成新闻通讯订阅后您想要重定向的当前页面。