首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zend框架2服务层中的baseurl

zend框架2服务层中的baseurl
EN

Stack Overflow用户
提问于 2014-04-23 17:20:28
回答 2查看 673关注 0票数 0

我正在尝试在我的应用程序中实现服务层。但是,当我从服务层发送邮件给用户时,我却面临着问题。

问题:

我试图从服务层发送电子邮件确认,其中包括我的网站的路径,如

代码语言:javascript
复制
<a href="www.mysite.com/email-confirmation/email/verificationToken">Click Here to verify your account</a>

如何在服务邮件中创建链接?我在某人的控制器中看到了下面的例子,但是我如何才能完成这个服务层呢?

代码语言:javascript
复制
->setBody("Please, click the link to confirm your registration => " .
                    $this->getRequest()->getServer('HTTP_ORIGIN') .
                    $this->url()->fromRoute('auth-doctrine/default', array(
                        'controller' => 'registration',
                        'action' => 'confirm-email',
                        'id' => $user->getUsrRegistrationToken())));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-28 04:22:13

如果您的服务层类似于模型文件,那么将下面的代码行添加到Service类文件中-

代码语言:javascript
复制
protected $router;
protected $request;

public function setRouter($router = null) {
    $this->router = $router;
}

public function getRouter() {
    return $this->router;
}

public function setRequest($request = null) {
    $this->request = $request;
}

public function getRequest() {
    return $this->request;
}

现在,在Controller类中,当您使用Service类时,执行以下类似的操作(它可能不是完全相同的,但您会得到这样的想法)

控制器类-

代码语言:javascript
复制
$service_layer_classname = new ServiceLayer_ClassName();
$service_layer_classname->setRequest($this->getRequest());
$service_layer_classname->setRouter($this->getEvent()->getRouter());

通过这种方式,您可以使用类似的函数在Service类中获得基于Controller的访问。

以一种简短但不推荐的方式,您只需将整个控制器对象(即$this)传递给Service类并访问所有函数。显然,这不是一个好的编程方法。

希望能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2014-04-26 04:44:41

试试这个-

代码语言:javascript
复制
$prefix = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http';
$server_name = $_SERVER['SERVER_NAME'];

$url = $this->getEvent()->getRouter()->assemble(
              array(
                  'controller' => 'registration',
                  'action' => 'confirm-email',
                  'id' => $user->getUsrRegistrationToken()
              ),
              array('name' => 'ROUTE_NAME')
       );

/*PLEASE REPLACE THE above 'ROUTE_NAME' WITH THE ONE YOU MUST HAVE USED FOR 'registration' CONTROLLER*/

$full_url = $prefix . "://" . $server_name . $url;

->setBody("Please, click the link to confirm your registration => " .
                $this->getRequest()->getServer('HTTP_ORIGIN') .
                $full_url
                );

Note: Try echoing the $full_url variable if required.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23251149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档