您好我在这里调用另一个控制器动作来发送邮件,这是我的代码:
user.php的
public function followAction()
{
$follow_id = $this->_getParam('id');
$response = "<a href='javascript: void(0)' class='i-wrap ig-wrap-user_social i-follow_small-user_social-wrap'><i class='i i-follow_small-user_social ig-user_social'></i>Stop Following</a>";
notifyEmail() ------> need to call Notity Controller with notifyEmail() Action along with
params
$this->_helper->json($response); ----> return json response
}
NotifyController.php
<?php
class NotifyController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function index()
{
}
public function notifyEmailAction()
{
// rest of email code goes here
}
}
感谢您的帮助!
答案 0 :(得分:7)
您必须将发送邮件功能移至其他位置, 并用两种方法调用它。
检查此帖子 Calling member function of other controller in zend framework?
我建议在路径/库中创建一个新文件夹'My',并在其中创建新文件Utilities.php,并在该文件中创建一个新类,您可以在其中放置所有帮助方法
class My_Utilities {
// put here your custom help methods
}
您需要auto-load that namespace。在configs / application.ini中
autoloaderNamespaces.my = "My_"
然后您可以使用名称空间My_和类My_Utilities。
在任何情况下,您都可以从另一个控制器调用方法:
include 'NotifyController.php';
$a = new NotifyController($this->_request, $this->_response);
$a->notifyEmailAction();
答案 1 :(得分:1)
$this->action('action', 'controller', 'module', 'params')
该视图助手遍历frontController并再次调度所有插件。
我认为不是最好的解决方案,请记住浪费资源
答案 2 :(得分:-1)
请尝试此代码
$this->action("action","controller","module")