西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → 從yii權(quán)威指南中學(xué)到的

從yii權(quán)威指南中學(xué)到的

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/8/9 0:13:14字體大小:A-A+

作者:佚名點擊:5645次評論:0次標簽: 權(quán)威

  • 類型:電子資料大。171KB語言:中文 評分:10.0
  • 標簽:
立即下載
8 頁 如何用gridview生成一個代搜索的管理列表

1、在Model的rules 設(shè)定可以搜索的屬性
array('title, status, create_time', 'safe', 'on'=>'search'),
2、在Model中,添加搜索時的方法
public function search()
{
$criteria=new CDbCriteria;

$criteria->compare('title',$this->title,true);

$criteria->compare('status',$this->status);

$criteria->compare('create_time',$this->create_time);

return new CActiveDataProvider('Post', array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'status, update_time DESC',
),
));
}
3、 在Controler中,寫接受搜索用到的表單的值的方法
public function actionAdmin()
{
$model=new Post('search');

if(isset($_GET['Post']))
$model->attributes=$_GET['Post'];
$this->render('admin',array(
'model'=>$model,
));
}
4、在view中用CGridView顯示
設(shè)置好
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(

),
)); ?>

以上代碼大部分是yii自動生成的,只要做少量修改即可
有時候會出現(xiàn),搜索后頁面為空的清況,原因可能是
layout/main.php中
echo $content外層無div,就是說main.php中必須有一個div包含$content

//CListView詳解
其用列表的形式顯示數(shù)據(jù),不象CGridView一樣,用表格顯示數(shù)據(jù),CListView用一個 view模板來顯示每一條數(shù)據(jù)
其支持排序與分頁

常用的代碼如下
<?php
$dataProvider = new CActiveDataProvider('Post',array(
'pagination'=>array(
'pageSize'=>2
),
));
$this->widget('zii.widgets.CListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'template'=>' {summary} {items} {pager}{sorter}',
'sortableAttributes'=>array(
'title',
'create_time'=>'Post Time',
),

));

//CActiveForm詳解

快速生成表單,支持ajax驗證,對于比較復(fù)雜的驗下最好是自己生成表單,寫驗證方法
常用代碼,在Controller中

public function actionForm()
{
$post = new Post();
if(isset($_POST['ajax']) && $_POST['ajax']==='post'){
echo CActiveForm::validate($post);
Yii::app()->end();
}

if(isset($_POST['Post'])){
$post->attributes = $_POST['Post'];
if($post->save()){
echo '存成功了';
}
}
$this->render('form',array('post'=>$post));
}
在view中

<?php
$form = $this->beginWidget('CActiveForm',array(
'id'=>'post',//這里與Controller中的ajax對應(yīng)
'enableAjaxValidation'=>true,

));
?>
<?php echo CHtml::errorSummary($post); ?>
<?php echo $form->labelEx($post,'title');?>
<?php echo $form->textField($post,'title')?>
<?php echo $form->error($post,'title'); ?> error一定要寫上,要不不會觸發(fā)ajax驗證

<?php echo $form->labelEx($post,'content');?>
<?php echo $form->textField($post,'content')?>

<?php echo CHtml::submitButton($post->isNewRecord ? 'Create' : 'Save'); ?>
<?php $this->endWidget(); ?>


//CBreadcrumbs常用代碼
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
'links'=>$this->breadcrumbs,
'homeLink'=>'<span><a href="http://abc.com">shouye</a></span>',
'separator'=>'>>>'
)); ?>
其中breadcrumbs中Controller中的一個屬性,如果要出現(xiàn)導(dǎo)航,就要在view中給此屬性附值
生成的html如下
<div class="breadcrumbs">
<span><a href="http://abc.com">shouye</a>
</span>&gt;&gt;&gt;<span>Managde Posts</span>&gt;&gt;&gt;
<span>b</span>&gt;&gt;&gt;<span>c</span></div>
所以如果網(wǎng)站用到導(dǎo)航的時候,美工最好把導(dǎo)航代碼定義如上

//CDetailView 用在僅僅是為了查看數(shù)據(jù)時,還是比較有用的


如何在提交后顯示一段提示
在控制器中
if(isset($_POST['name'])){
Yii::app()->user->setFlash('success','you are success');
$this->refresh();
}
在view中
if (Yii::app()->user->hasFlash('success')){
echo 're is'.Yii::app()->user->getFlash('success');
}else{
echo 'no';
}

如何得到當(dāng)前域名:
app()->request->hostInfo


activeDropDownList,給出提示,并有值
array('empty'=>array(0=>'選擇分組')


<input type="submit" class="btn" value="提交" />

驗證碼如何生成及驗證:
Controller中
public function actions()
{
return array(
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=>0xFFFFFF,
'maxLength'=>4,
'minLength'=>4,
),
);
}
View中
<?php echo CHtml::activeTextField($user, 'verifyCode');?>
<?php $this->widget('CCaptcha',array(
'captchaAction' => '/site/captcha',
'showRefreshButton' => false,
'clickableImage' => true,
'imageOptions' => array('align'=>'top', 'title'=>'重新獲取'),
));?>
Model中
array('verifyCode', 'captcha', 'captchaAction'=>'site/captcha', 'message' => '輸入的驗證碼不正確'),


set_time_limit(0);//禁止角本超時


如何想把手工的東西記錄的數(shù)據(jù)庫
main.php中配置log

array(
'class'=>'CDbLogRoute',
'levels'=>'info',
'logTableName'=>'Log',
'connectionID'=>'db',
),
應(yīng)用時
Yii::log('信息','info');

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)