Yii常用技巧2

YII FRAMEWORK使用DAO方式查询分页代码

控制器代码如下:

  1. $sql = "SELECT * FROM table WHERE cid=2 and status=1";
  2. $criteria=new CDbCriteria();
  3. $result = Yii::app()->db->createCommand($sql)->query();
  4. $pages=new CPagination($result->rowCount);
  5. $pages->pageSize=22;
  6. $pages->applyLimit($criteria);
  7. $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");
  8. $result->bindValue(':offset', $pages->currentPage*$pages->pageSize);
  9. $result->bindValue(':limit', $pages->pageSize);
  10. $posts=$result->query();
  11. $this->render('index',array(
  12.         'posts'=>$posts,
  13.         'pages'=>$pages,
  14. ));
视图代码如下:

  1. 循环输出
  2. <?php foreach($posts as $model):?>
  3. <?php echo CHtml::link($model['title'],array('article/view','id'=>$model['id']));?>
  4. <?php endforeach;?>
  5. 分页widget代码:
  6. <?php $this->widget('CLinkPager',array('pages'=>$pages));?>

发表于 1年前

热度:0

标签:DAO方式查询分页代码

YII FRAMEWORK的用户验证与授权

yii提供了CUserIdentity类,这个类一般用于验证用户名和密码的类.继承后我们需要重写其中的authenticate()方法来实现我们自己的验证方法.具体代码如下:

  1. class UserIdentity extends CUserIdentity
  2. {
  3.     private $_id;
  4.     public function authenticate()
  5.     {
  6.         $record=User::model()->findByAttributes(array('username'=>$this->username));
  7.         if($record===null)
  8.             $this->errorCode=self::ERROR_USERNAME_INVALID;
  9.         else if($record->password!==md5($this->password))
  10.             $this->errorCode=self::ERROR_PASSWORD_INVALID;
  11.         else
  12.         {
  13.             $this->_id=$record->id;
  14.             $this->setState('title', $record->title);
  15.             $this->errorCode=self::ERROR_NONE;
  16.         }
  17.         return !$this->errorCode;
  18.     }

  19.     public function getId()
  20.     {
  21.         return $this->_id;
  22.     }
  23. }
在用户登陆时则调用如下代码: 

// 使用提供的用户名和密码登录用户

  1. $identity=new UserIdentity($username,$password);
  2. if($identity->authenticate())
  3.     Yii::app()->user->login($identity);
  4. else
  5.     echo $identity->errorMessage;
用户退出时,则调用如下代码: 

// 注销当前用户

  1. Yii::app()->user->logout();
其中的user是yii的一个components.需要在protected/config/main.php中定义

  1. 'user'=>array(
  2.         // enable cookie-based authentication
  3.         'allowAutoLogin'=>true,
  4.         'loginUrl' => array('site/login'),
  5. ),

发表于 1年前

热度:0

标签:用户验证与授权,Yii Framework

YII FRAMEWORK如何在控制器添加CSS文件或JAVASCRIPT文件

public function init()
{    
    parent::init();    
    Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/my.css');
    Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/css/my.js');
}

发表于 1年前

热度:0

YII FRAMEWORK的COOKIE使用方法

设置cookie:

  1. $cookie = new CHttpCookie('mycookie','this is my cookie');
  2. $cookie->expire = time()+60*60*24*30;  //有限期30天
  3. Yii::app()->request->cookies['mycookie']=$cookie;
读取cookie:

  1. $cookie = Yii::app()->request->getCookies();
  2. echo $cookie['mycookie']->value;
销毁cookie:

  1. $cookie = Yii::app()->request->getCookies();
  2. unset($cookie[$name]);

发表于 1年前

热度:2

标签:cookie

YII FRAMEWORK中TRASACTION事务的应用

$model=Post::model();
$transaction=$model->dbConnection->beginTransaction();
try
{
    // find and save are two steps which may be intervened by another request
    // we therefore use a transaction to ensure consistency and integrity
    $post=$model->findByPk(10);
    $post->title='new post title';
    $post->save();
    $transaction->commit();
}
catch(Exception $e)
{
    $transaction->rollBack();
}

转自http://www.yiichina.org/thread-104-1-1.html  

发表于 1年前

热度:0

基于NESTEDSET的无级限分类和CTREEVIEW的使用

附带源码:

http://www.yiichina.org/forum.php?mod=viewthread&tid=615&highlight=%E5%9F%BA%E4%BA%8ENestedset%E7%9A%84%E6%97%A0%E7%BA%A7%E9%99%90%E5%88%86%E7%B1%BB%E5%92%8CCTreeView%E7%9A%84%E4%BD%BF%E7%94%A8

发表于 1年前

热度:0

YII实现伪静态方法

1.httpd.conf服务器级配置
#LoadModule rewrite_module modules/mod_rewrite.so
去除前面的#
oadModule rewrite_module modules/mod_rewrite.so

首先将虚拟目录中的AllowOverride None 修改为:
AllowOverride All,让其加载目录下得.htaccess文件,并且遵循里面定义
的规则

2.在web应用中修改配置文件代码如下:

// 使路径格式的URL
        'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName' => false,
            'urlSuffix'=>'.html',
        ),

3.在web应用根目录下建立..htaccess文件,代码如下:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^你的域名.com[NC]
RewriteRule ^(.*)$ http://www.你的域名.com/$1 [L,R=301]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

 

这样就可以实现Yii的伪静态了,可以将如下路径:

http://localhost/webname/index.php?r=item/list

修改为如下友好且容易被搜索引擎收录的地址:

http://localhost/webname/item/list.html 



发表于 1年前

热度:0

标签:yii伪静态,伪静态配置

你可能感兴趣的:(DAO,exception,function,Module,Authentication,.htaccess)