public function lostPasswordAction() { $viewModel = new ViewModel(); $form = new LostPasswordForm(); $accountFilter = new AccountFIlter(); $filter = new InputFilter(); $filter->add($accountFilter->get('email')); $form->setInputFilter($filter); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default'); // 找到使用者 if ($user = $em->getRepository('Base\\Entity\\User')->findOneBy(array('email' => $form->get('email')->getValue()))) { $md5 = md5(time() . $user->getUserName() . $user->getEmail()); $user->setCheckCode($md5); $em->persist($user); $em->flush(); $view = new \Zend\View\Renderer\PhpRenderer(); $resolver = new \Zend\View\Resolver\TemplateMapResolver(); $resolver->setMap(array('mailLayout' => __DIR__ . '/../../../../Application/view/layout/layout-mail.phtml', 'mailTemplate' => __DIR__ . '/../../../view/user/sign/lost-password-mail.phtml')); $view->setResolver($resolver); $uri = $this->getRequest()->getUri(); $scheme = $uri->getScheme(); $host = $uri->getHost(); $base = sprintf('%s://%s%s', $scheme, $host, $this->getRequest()->getBasePath()); $viewModel->setTemplate('mailTemplate')->setVariables(array('user' => $user, 'url' => $base)); $content = $view->render($viewModel); $viewLayout = new ViewModel(); $viewLayout->setTemplate('mailLayout')->setVariables(array('content' => $content)); $body = $view->render($viewLayout); $bodyPart = new \Zend\Mime\Message(); $bodyMessage = new \Zend\Mime\Part($body); $bodyMessage->type = 'text/html'; $bodyPart->setParts(array($bodyMessage)); $message = new Mail\Message(); $message->addTo($user->getEmail(), $user->getusername()); $message->setFrom('*****@*****.**', '系統通知信'); $message->setSubject('重設密碼通知信'); $message->setBody($bodyPart); $message->setEncoding('UTF-8'); $transport = new Mail\Transport\Sendmail(); $transport->send($message); // $viewModel->setTemplate('user/login/send-mail.phtml'); $this->flashmessenger()->addMessage($user->getEmail()); return $this->redirect()->toRoute('user/default', array('controller' => 'sign', 'action' => 'send-mail')); // return $viewModel; } else { $this->flashmessenger()->addMessage('您輸入了錯誤的帳號或電子郵件'); } } } $viewModel->setVariable('form', $form); $viewModel->setVariable('flashMessages', $this->flashMessenger()->getMessages()); return $viewModel; }
public function getResolverMap() { $templateMapResolver = new \Zend\View\Resolver\TemplateMapResolver(); $arrayMapResolver = array("{$this->moduleName}/{$this->controllerName}/{$this->actionName}" => $this->getPathViews() . DS . "templates" . DS . "{$this->controllerName}" . DS . "{$this->actionName}.phtml", 'layout/' . $this->moduleName => $this->getPathLayout() . DS . $this->moduleName . '.phtml', 'layout/error' => $this->getPathLayout() . DS . 'error.phtml', 'error/index' => $this->getPathViews() . DS . 'templates' . DS . 'error' . DS . 'index.phtml', 'error/404' => $this->getPathViews() . DS . 'templates' . DS . 'error' . DS . '404.phtml'); return $templateMapResolver->setMap($arrayMapResolver); }
public function pdfAction() { $sm = $this->getServiceLocator(); $companyService = $sm->get('Stjornvisi\\Service\\Company'); /** @var $companyDAO \Stjornvisi\Service\Company */ $userService = $sm->get('Stjornvisi\\Service\\User'); /** @var $companyDAO \Stjornvisi\Service\User */ $company = $companyService->get(14); array_walk($company->members, function ($member) use($userService) { $attendance = $userService->attendance($member->id); $member->attendance = count($attendance) <= 2 ? $attendance : array_slice($attendance, -2, 2, false); }); $layout = new ViewModel(array('company' => $company)); $layout->setTemplate('script'); $phpRenderer = new \Zend\View\Renderer\PhpRenderer(); $phpRenderer->setCanRenderTrees(true); $resolver = new \Zend\View\Resolver\TemplateMapResolver(); $resolver->setMap(array('script' => __DIR__ . '/../../../view/pdf/company-report.phtml')); $phpRenderer->setResolver($resolver); $pdf = new \CanGelis\PDF\PDF('/usr/local/bin/wkhtmltopdf'); $pdf->loadHTML($phpRenderer->render($layout))->save("out.pdf", new \League\Flysystem\Adapter\Local('/Users/einar/Desktop/'), true); }
<?php require_once './autoloader.php'; use Zend\Mail\Message; use Zend\Mail\Transport; use Zend\Di\Di; use Zend\Di\Config as DiConfig; $diConfig = array('instance' => array('Zend\\Mail\\Transport\\FileOptions' => array('parameters' => array('path' => __DIR__)), 'Zend\\Mail\\Transport\\File' => array('injections' => array('Zend\\Mail\\Transport\\FileOptions')), 'Zend\\Mail\\Transport\\SmtpOptions' => array('parameters' => array('name' => 'sendgrid', 'host' => 'smtp.sendgrid.net', 'port' => 25, 'connectionClass' => 'login', 'connectionConfig' => array('username' => '*****@*****.**', 'password' => 'password'))), 'Zend\\Mail\\Message' => array('parameters' => array('headers' => 'Zend\\Mail\\Headers', 'Zend\\Mail\\Message::setTo:emailOrAddressList' => '*****@*****.**', 'Zend\\Mail\\Message::setTo:name' => 'EvaEngine', 'Zend\\Mail\\Message::setFrom:emailOrAddressList' => '*****@*****.**', 'Zend\\Mail\\Message::setFrom:name' => 'EvaEngine', 'setBody' => 'Zend\\View\\Renderer\\PhpRenderer::render')), 'Zend\\Mail\\Transport\\Smtp' => array('injections' => array('Zend\\Mail\\Transport\\SmtpOptions')))); $di = new Di(); $di->configure(new DiConfig($diConfig)); $transport = $di->get('Zend\\Mail\\Transport\\Smtp'); $transport = $di->get('Zend\\Mail\\Transport\\Sendmail'); $transport = $di->get('Zend\\Mail\\Transport\\File'); $message = $di->get('Zend\\Mail\\Message'); $view = new Zend\View\Renderer\PhpRenderer(); $resolver = new Zend\View\Resolver\TemplateMapResolver(); $resolver->setMap(array('mailTemplate' => __DIR__ . '/mail/template.phtml')); $view->setResolver($resolver); $viewModel = new Zend\View\Model\ViewModel(); $viewModel->setTemplate('mailTemplate')->setVariables(array('user' => 'AlloVince')); $message->setSubject("Zend Mail with Template")->setBody($view->render($viewModel)); $transport->send($message);
/** * Set the Layout based on themes-scheme */ public function setLayout(MvcEvent $e) { $app = $e->getParam('application'); $sm = $app->getServiceManager(); $config = $sm->get('dxapp_module_options'); $mobileDetect = $sm->get('dxMobileDetect'); $viewModel = $e->getViewModel(); $template = 'layout/layout'; //$viewModel->getTemplate(); $frontendThemex = $config->getFrontendTheme(); $templateMaps = $config->getTemplateMaps(); $frontendThemes = $config->getFrontendThemes(); //array('dxdefault'); $viewResolver = $sm->get('ViewResolver'); $viewThemeResolver = new \Zend\View\Resolver\AggregateResolver(); $templateMapResolver = new \Zend\View\Resolver\TemplateMapResolver(); $pathResolver = new \Zend\View\Resolver\TemplatePathStack(); $asseticConfiguration = array(); if (!in_array($frontendThemex, $frontendThemes)) { $frontendThemes[] = $frontendThemex; } foreach ($frontendThemes as $frontendTheme) { if (isset($templateMaps['front'][$frontendTheme]['view_manager']['template_map'])) { $templateMapResolver->add($templateMaps['front'][$frontendTheme]['view_manager']['template_map']); } if (isset($templateMaps['front'][$frontendTheme]['view_manager']['template_path_stack'])) { $pathResolver->addPaths($templateMaps['front'][$frontendTheme]['view_manager']['template_path_stack']); $defaultPathStack = $sm->get('ViewTemplatePathStack'); $pathResolver->setDefaultSuffix($defaultPathStack->getDefaultSuffix()); $viewThemeResolver->attach($pathResolver); } if (isset($templateMaps['front'][$frontendTheme]['assetic_configuration'])) { $asseticConfiguration = \Dxapp\Utility\ArrayManager::merge($asseticConfiguration, $templateMaps['front'][$frontendTheme]['assetic_configuration']); } } $viewThemeResolver->attach($templateMapResolver); $viewResolver->attach($viewThemeResolver, 100); if (!empty($asseticConfiguration)) { $as = $sm->get('dxThemeAssets'); $response = $e->getResponse(); if (!$response) { $response = new Response(); $e->setResponse($response); } $router = $e->getRouteMatch(); $as->setThemeAssets($asseticConfiguration); if ($router) { $as->setRouteName($router->getMatchedRouteName()); $as->setControllerName($router->getParam('controller')); $as->setActionName($router->getParam('action')); } $as->renderThemeAssets(); $as->initLoadedModules($this->getLoadedModules()); $as->setupRenderer($sm->get('ViewRenderer')); } $section = $config->getApplicationSection(); if ($section == 'admin') { if (FALSE === strpos($template, 'admin-')) { $template = str_replace('/', '/admin-', $template); } } $viewModel->setTemplate($template); }