1.首先,在D:\wamp\www\yii\blog\protected\config的main.php这个配置文件里面,将db的这个配置打开
'db'=>array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=blog',//配置host和数据库的名字
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => 'hd_',//表前缀
'enableParamLogging' => true //开启调试信息
),
下图是创建数据库表的方法。
在D:\wamp\www\yii\framework\db目录下的CDbConnection.php文件里有你在main.php里面配置的参数信息
public connectionString;publicusername=”;
public password=”;publicschemaCachingDuration=0;
public schemaCachingExclude=array();publicschemaCacheID=’cache’;
public queryCachingDuration=0;publicqueryCachingDependency;
public queryCachingCount=0;publicqueryCacheID=’cache’;
public autoConnect=true;publiccharset;
public emulatePrepare;publicenableParamLogging=false;
public enableProfiling=false;publictablePrefix;
public $initSQLs;
public connectionString;publicusername=”;
public password=”;publicschemaCachingDuration=0;
public schemaCachingExclude=array();publicschemaCacheID=’cache’;
public queryCachingDuration=0;publicqueryCachingDependency;
public queryCachingCount=0;publicqueryCacheID=’cache’;
public autoConnect=true;publiccharset;
public emulatePrepare;publicenableParamLogging=false;
public enableProfiling=false;publictablePrefix;
public $initSQLs;
2.然后是测试数据库是否连通。需要进入你要编写的Controller里面。如我现在用的是LoginController.php这个文件里面的控制器。在里面的actionIndex方法里面加上var_dump(Yii::app()->db);
然后通过url:localhost/yii/blog/index.php?r=admin/login/index 来调用。出现如下情况表示成功。
3.创建一个模型(model),这样才能进行增删改查的一些功能。模型创建在D:\wamp\www\yii\blog\protected\models这个里面,前台后台用到的模型都放这里,因为yii的公用性比较好,前后台模型能够共用。
名称随你自己定在,如在这个目录下创建一个user.php文件。这个文件里面的的类的名字应该和文件名一样,用User。(建议一个数据库表建一个模型)
4.在LoginController这个控制器里面,对model的东西进行调用。
$userInfo = User::model()->find('username = :name',array(':name'=>'admin'));//获取admin的所有信息
p($userInfo);die;
上面的这段代码是在controller里面调用model层的东西,这里是调用find方法。里面的参数是user这个model里面定义的变量username,然后用等号= 来判断,通过:name这种来传递参数。
<ul id="peo">
<li class="error"><?php echo $form->error($loginForm,'username') ?>
</li>
</ul>
<ul id="psd">
<li class="error"><?php echo $form->error($loginForm,'password') ?>
</li>
</ul>
<ul id="ver">
<li class="error"><?php echo $form->error($loginForm,'captcha') ?>
<!--form->error()是用来显示错误信息的-->
</li>
</ul>
关于model层里面的rules函数
public function rules()
{
return array(
// username and password are required
array('username', 'required', 'message'=>'用户名必须填写'),
array('password', 'required', 'message'=>'密码必须填写'),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate'),//这个autenticate调用的是model面自己写的方法。
array('captcha', 'captcha', 'message'=>'验证码错误')
);
}
/**
* Authenticates the password.
* This is the 'authenticate' validator as declared in rules().
*/
public function authenticate($attribute,$params) {
if(!$this->hasErrors()) {
$this->_identity=new UserIdentity($this->username,$this->password);//将获取到的username和password传递给UserIdentity这个类,这个类是在components里面的,是自己放置的组件,和controller组件是一样的,
if(!$this->_identity->authenticate())
$this->addError('password','用户名或者密码不正确');
}
}
$loginForm->attributes = $_POST['LoginForm'];//在控制器里面,通过这个获取数据。
验证成功是的密码
f($loginForm->validate() && $loginForm->login()){
Yii::app()->session['logintime'] = time();
$this->redirect(array('default/index'));
}