2010-07-16 25 views
9

Tôi muốn tạo một lớp tùy chỉnh sẽ tạo ra một email HTML. Tôi muốn nội dung của email đến từ thư mục "tập lệnh xem email". Vì vậy, khái niệm sẽ là tôi có thể tạo tập lệnh xem email HTML giống như cách tôi tạo kịch bản lệnh bình thường (có thể chỉ định biến lớp, v.v.) và tập lệnh xem sẽ được hiển thị dưới dạng nội dung HTML của email.Làm thế nào để sử dụng trình trợ giúp xem khung nhìn Zend Framework bên ngoài bộ điều khiển hoặc chế độ xem?

Ví dụ, trong bộ điều khiển:

$email = My_Email::specialWelcomeMessage($toEmail, $firstName, $lastName); 
$email->send(); 

Chức năng My_Email::specialWelcomeMessage() sẽ làm một cái gì đó như thế này:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) { 
    $mail = new Zend_Mail(); 
    $mail->setTo($toEmail); 
    $mail->setFrom($this->defaultFrom); 
    $mail->setTextBody($this->view->renderPartial('special-welcome-message.text.phtml', array('firstName'=>$firstName, 'lastName'=>$lastName)); 
} 

Lý tưởng nhất, nó sẽ là tốt nhất nếu tôi có thể tìm thấy một cách để làm cho specialWelcomeMessage() chức năng hành động dễ dàng như thế này:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) { 
    $this->firstName = $firstName; 
    $this->lastName = $lastName; 
    //the text body and HTML body would be rendered automatically by being named $functionName.text.phtml and $functionName.html.phtml just like how controller actions/views happen 
} 

Wh sau đó ich sẽ làm cho chuyên hoan nghênh-message.text.phtml và các kịch bản đặc biệt chào đón-message.html.phtml:

<p>Thank you <?php echo $this->firstName; ?> <?php echo $this->lastName; ?>.</p> 

Làm thế nào tôi sẽ gọi view helper phần từ bên ngoài của một kịch bản xem hoặc điều khiển ? Tôi có đang tiếp cận đúng cách này không? Hoặc là có một giải pháp tốt hơn cho vấn đề này?

Trả lời

11

gì về:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) { 
    $view = new Zend_View; 
    $view->setScriptPath('pathtoyourview'); 
    $view->firstName = $firstName; 
    $view->lastName = $lastName; 
    $content = $view->render('nameofyourview.phtml'); 
    $mail = new Zend_Mail(); 
    $mail->setTo($toEmail); 
    $mail->setFrom($this->defaultFrom); 
    $mail->setTextBody($content); 
} 

Nếu bạn muốn để tự động thay đổi đường dẫn kịch bản với tên hành động của bạn như bạn nói, tại sao không sử dụng được tên hành động hoặc điều khiển bạn đang gọi điện thoại và gửi nó như là một biến , hoặc tốt hơn vẫn là một tham số mặc định. Điều này sẽ giúp:

http://framework.zend.com/manual/en/zend.controller.request.html

Các vấn đề liên quan