2010-11-20 3 views
6

J'ai un modèle d'email dans une vue et je veux écrire un processus qui est ConsoleApplication qui prépare les emails à envoyer. Je suppose que c'est ConsoleApplication Je n'ai pas accès au contrôleur. Est-ce un moyen de rendre une vue?afficher le rendu dans l'application yii console

Répondre

16

Voici ce que j'utilise:

private function render($template, array $data = array()){ 
    $path = Yii::getPathOfAlias('application.views.email').'/'.$template.'.php'; 
    if(!file_exists($path)) throw new Exception('Template '.$path.' does not exist.'); 
    return $this->renderFile($path, $data, true); 
} 

Il prend modèle de courrier électronique de vues/email.

+0

est-il un bon moyen de rendre de modèle? ou existe-t-il un lien vers CConsoleCommand actuellement lancé? – liysd

+0

Ajoutez cette méthode à votre commande de console. Vous pouvez passer un tableau avec $ this et votre modèle dans le paramètre $ data. –

+0

downvote, aucun exemple d'utilisation fourni, quel gâchis il est juste de coller dans la commande – Tebe

1

Si tout le reste échoue (comme dans mon cas):

<?php 


    /** 
    * Renders a view file & returns result. 
    * @param string $_viewFile_ view file path 
    * @param array $_data_ optional data to be extracted as local view variables 
    * @param boolean $_return_ whether to return the rendering result instead of displaying it 
    * @return mixed the rendering result if required. Null otherwise. 
     */ 
public function myRenderPartial($_viewFile_,$_data_=null,$_return_=true) { 

    if(is_array($_data_)) 
     extract($_data_,EXTR_PREFIX_SAME,'data'); 
    else 
     $data=$_data_; 

    if($_return_) 
    { 
     ob_start(); 
     ob_implicit_flush(false); 
     require(YiiBase::getPathOfAlias("application.views").$_viewFile_.'.php'); 
     return ob_get_clean(); 
    } 
    else 
    { 
     require($_viewFile_); 
    } 
} 

?>