YiiFramework入门知识点总结(图文教程)(3)

视图文件命名,请与ActionID相同。但请记住,这只是个推荐的命名约定。其实视图文件名不必与ActionID相同,只需要将文件的名字作为第一个参数传递给render()就可以了。

DB相关

$Prerfp = Prerfp::model()->findAll( array( 'limit'=>'5', 'order'=>'releasetime desc' ) );

$model = Finishrfp::model()->findAll( array( 'select' => 'companyname,title,releasetime', 'order'=>'releasetime desc', 'limit' => 10 ) ); foreach($model as $val){ $noticeArr[] = "  在".$val->title."竞标中,".$val->companyname."中标。"; }

$model = Cgnotice::model()->findAll ( array( 'select' => 'status,content,updatetime', 'condition'=> 'status = :status ', 'params' => array(':status'=>0), 'order'=>'updatetime desc', 'limit' => 10 ) ); foreach($model as $val){ $noticeArr[] = $val->content; }

$user=User::model()->find('LOWER(username)=?',array($username));

$noticetype = Dictionary::model()->find(array( 'condition' => '`type` = "noticetype"') );

// 查找postID=10 的那一行 $post=Post::model()->find('postID=:postID', array(':postID'=>10));

也可以使用$condition 指定更复杂的查询条件。不使用字符串,我们可以让$condition 成为一个CDbCriteria 的实例,它允许我们指定不限于WHERE 的条件。例如:

$criteria=new CDbCriteria; $criteria->select='title'; // 只选择'title' 列 $criteria->condition='postID=:postID'; $criteria->params=array(':postID'=>10); $post=Post::model()->find($criteria); // $params 不需要了

注意,当使用CDbCriteria 作为查询条件时,$params 参数不再需要了,因为它可以在CDbCriteria 中指定,就像上面那样。

一种替代CDbCriteria 的方法是给find 方法传递一个数组。数组的键和值各自对应标准(criterion)的属性名和值,上面的例子可以重写为如下:

$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>10), ));

其它

1、链接

复制代码 代码如下:

<span><?php echo CHtml::link(Controller::utf8_substr($val->title,0,26),array('prerfp/details','id'=>$val->rfpid),array('target'=>'_blank'));?></a> </span>

具体查找API文档:CHtml的link()方法

复制代码 代码如下:

<span><a target="_blank"  title="<?php echo $val->title;?>" href="<?php echo $this->createUrl('prerfp/details',array('id'=>$val->rfpid)) ;?>" ><?php echo Controller::utf8_substr($val->title,0,26); ?></a> </span>


具体请查找API文档:CController的createUrl()方法

以上两个连接效果等同

组件包含

一个示例:

在视图中底部有如下代码:

复制代码 代码如下:

<?php $this->widget ( 'Notice' ); ?>

YiiFramework入门知识点总结(图文教程)

打开protected/components下的Notice.php文件,内容如下:

<?php Yii::import('zii.widgets.CPortlet'); class Banner extends CPortlet { protected function renderContent() { $this->render('banner'); } }

渲染的视图banner,是在protected/components/views目录下。

具体查看API,关键字:CPortlet

获取当前host

Yii::app()->request->getServerName(); //and $_SERVER['HTTP_HOST']; $url = 'http://'.Yii::app()->request->getServerName(); $url .= CController::createUrl('user/activateEmail', array('emailActivationKey'=>$activationKey)); echo $url;

关于在发布新闻时添加ckeditor扩展中遇到的情况

$this->widget('application.extensions.editor.CKkceditor',array( "model"=>$model, # Data-Model "attribute"=>'news_content', # Attribute in the Data-Model "height"=>'300px', "width"=>'80%', "filespath"=>Yii::app()->basePath."/../up/", "filesurl"=>Yii::app()->baseUrl."/up/", );

echo Yii::app()->basePath

如果项目目录在:d:\wwwroot\blog目录下。则上面的值为d:\wwwroot\blog\protected。注意路径最后没有返斜杠

echo Yii::app()->baseUrl;

如果项目目录在:d:\wwwroot\blog目录下。则上面的值为/blog。注意路径最后没有返斜杠

(d:\wwwroot为网站根目录),注意上面两个区别。一个是basePath,一个是baseUrl

其它(不一定正确)

在一个控制器A对应的A视图中,调用B模型中的方法,采用:B::model()->B模型中的方法名();

前期需要掌握的一些API
CHtml

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/64fb5ccb0b5d6848244cdf37d7fe9431.html