2014-06-17 34 views
1

目前adminEmail是在params.php文件中設置的。我試圖動態更改'adminEmail',然後我可以分配我想要的電子郵件值。有params.php中的代碼。如何在yii框架中動態創建adminEmail

return array(
    // this is displayed in the header section 
    'title' => 'title here', 
    // this is admin email 
    'adminEmail' => '[email protected]', 

但管理員電子郵件可以是多個(如[email protected][email protected]),我怎麼能在params.php動態設置管理員的電子郵件?

在此先感謝!

+0

您可以在運行時改變參數,可以,但它不會是持久的。你想要的是將其保存到數據庫中,並且不要使用admin email的params文件,即:從params文件中刪除adminEmail。 –

回答

0

您可以嘗試在adminEmail上設置多個電子郵件,並在運行時使用索引訪問它。 EG

//asign multiple email ids to adminEmail as array 
'params'=>array(
    // this is used in contact page 
    'adminEmail'=>array('[email protected]','[email protected]','[email protected]','[email protected]') 
), 

//access it using array index at runtime as your requirement 
<?php echo Yii::app()->params['adminEmail'][1];?> //[email protected] 
<?php echo Yii::app()->params['adminEmail'][2];?> // [email protected] 

OR

創建一個類的靜態方法,將生成動態的電子郵件ID和 然後將其設置爲您ADMINEMAIL PARAM .eg

class Email 
     { 
    public static function generateEmailIds() 
    { 
     //or any other way to generate email ids or id 
       return array('[email protected]', 
       '[email protected]', 
       '[email protected]'); 
    } 
} 
'params'=>array(
    // this is used in contact page 
    'adminEmail'=>Email::generateEmailIds(), 
) 
+0

這不回答這個問題。 OP想要*動態改變'adminEmail'* –

0

好吧,雖然我不t推薦這種方法,你想要做的事情可以這樣完成:

  • 你需要將你的數組存儲在的文件中,序列號爲的表格(即調用函數serialize()就可以了。這將把數組變成一個字符串。

  • 可以讀取該文件,並反序列化它(即呼叫功能unserialize()就可以了。那會變成你閱讀形式的文件回一個PHP數組中的字符串。)

    $handle = fopen('path/to/file','rb'); 
    $contents = fread($handle,999). 
    $array = unserialize($contents); 
    
  • 設置'adminEmail'你希望它是什麼:

    $array['adminEmail'] = '[email protected]; 
    

    甚至

    $array['adminEmail']= array(..lots of emails..); 
    
  • 然後您需要將數組轉換爲字符串並將數組寫回文件。與此類似,例如:

    $serialized_contents = serialize($array); 
    fwrite($handle, $serialized_contents); 
    

There may be more efficient ways to do this if you want to.