2014-06-17 35 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.