我正在尝试在我的应用程序中实现服务层。但是,当我从服务层发送邮件给用户时,我却面临着问题。
问题:
我试图从服务层发送电子邮件确认,其中包括我的网站的路径,如
<a href="www.mysite.com/email-confirmation/email/verificationToken">Click Here to verify your account</a>如何在服务邮件中创建链接?我在某人的控制器中看到了下面的例子,但是我如何才能完成这个服务层呢?
->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())));发布于 2014-04-28 04:22:13
如果您的服务层类似于模型文件,那么将下面的代码行添加到Service类文件中-
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类时,执行以下类似的操作(它可能不是完全相同的,但您会得到这样的想法)
控制器类-
$service_layer_classname = new ServiceLayer_ClassName();
$service_layer_classname->setRequest($this->getRequest());
$service_layer_classname->setRouter($this->getEvent()->getRouter());通过这种方式,您可以使用类似的函数在Service类中获得基于Controller的访问。
或
以一种简短但不推荐的方式,您只需将整个控制器对象(即$this)传递给Service类并访问所有函数。显然,这不是一个好的编程方法。
希望能帮上忙。
发布于 2014-04-26 04:44:41
试试这个-
$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.https://stackoverflow.com/questions/23251149
复制相似问题