在后台设置yii的配置文件

一.原出处:http://www.yiiframework.com/wiki/304/setting-application-parameters-dynamically-in-the-back-end

二具体:

1.创建model create protected/backend/models/ConfigForm.php

<?php
class ConfigForm extends CFormModel
{
    public $adminEmail;
    public $paramName;
 
    public function rules()
    {
        return array(
            array('adminEmail, paramName','required'),
        );
    }
}
?>

2.创建controller protected/backend/controllers/ConfigController.php

<?php
class ConfigController extends Controller
{
    public function actionIndex()
    {
        $file = dirname(__FILE__).'/../../../config/params.inc';
        $content = file_get_contents($file);
        $arr = unserialize(base64_decode($content));
        $model = new ConfigForm();
        $model->setAttributes($arr);
 
        if (isset($_POST['ConfigForm']))
        {
            $config = array(        
                'adminEmail'=>$_POST['ConfigForm']['adminEmail'],
                'paramName'=>$_POST['ConfigForm']['paramName'],
            );
            $str = base64_encode(serialize($config));
            file_put_contents($file, $str);
            Yii::app()->user->setFlash('config', Yii::t('app', 'Your new options have been saved.'));
            $model->setAttributes($config);
        }
 
        $this->render('index',array('model'=>$model));
    }
}
?>

3.创建view protected/backend/views/config/index.php

<div class="form">
 
<?php $form = $this->beginWidget('CActiveForm', array(
    'id' => 'config-form',
    'enableAjaxValidation' => false,
));
?>
    <h1><?php echo Yii::t('app', 'Options'); ?></h1>
 
    <?php if(Yii::app()->user->hasFlash('config')):?>
    <div class="info">
        <?php echo Yii::app()->user->getFlash('config'); ?>
    </div>
    <?php endif; ?>
 
    <p class="note">
        <?php echo Yii::t('app', 'Fields with'); ?> <span class="required">*</span> <?php echo Yii::t('app', 'are required'); ?>.
    </p>
 
    <?php echo $form->errorSummary($model); ?>
 
    <div class="row">
    <?php echo $form->labelEx($model,'adminEmail'); ?>
    <?php echo $form->textField($model, 'adminEmail'); ?>
    <?php echo $form->error($model,'adminEmail'); ?>
    </div><!-- row -->
    <div class="row">
    <?php echo $form->labelEx($model,'paramName'); ?>
    <?php echo $form->textField($model, 'paramName'); ?>
    <?php echo $form->error($model,'paramName'); ?>
    </div><!-- row -->
    <div class="row buttons">
    <?php echo CHtml::submitButton(Yii::t('app', 'Save')); ?>
    </div>
 
<?php $this->endWidget(); ?>
</div><!-- form -->

4.创建两个文件

create the following config files under protected/config:

  • params.inc
  • params.php

5.编辑 protected/config/main.php

// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>require(dirname(__FILE__).'/params.php'),

6.编辑 protected/config/params.php

<?php
$file = dirname(__FILE__).'/params.inc';
$content = file_get_contents($file);
$arr = unserialize(base64_decode($content));
return CMap::mergeArray(
        $arr,
        array(
            'salt'=>'P@bl0',
            'someOption'=>true,
        )
    )
;
?>
posted @ 2014-10-15 08:45  半醉半醒201  阅读(205)  评论(0)    收藏  举报