看完一遍,感觉比较基础,适合对YII不了解的用户观看。解决硬盘空间紧张问题,看完一遍将删除,特在此记录每集大概内容。未做详细说明,旨在方便正在学习YII朋友在未观看视频时,对视频中的内容有个大概了解。
前面视频讲了
1、创建WEBAPP
2、通过IDE创建项目,包含YII Framework目录-> 自动提示功能
3、修改配置main.php
连接数据库
脚手架GII
SQL详情显示在WEB FOOTER
4、Model Generator、Controller Generator
5、关于模块的创建 Module Generator
---------------------------------------------------------------------------------------
3_5_1_userSystem.mov
---------------------------------------------------------------------------------------
主要讲登陆。
由系统默认的admin/demo登陆 改为 通过数据库用户表来登陆
更改了components/UserIdentity.php中的authenticate方法
通过后台添加帐号。在添加帐号时将密码进行md5加密,这里用到了重写beforeSave()方法
---------------------------------------------------------------------------------------
3_5_2_newsBasic.mov
---------------------------------------------------------------------------------------
主要讲解通过admin模块添加新闻的内容
1、将type和status显示为下拉菜单。并设置下拉菜单的默认值。
2、News模型中的rules方法中的验证规则
3、去掉该由系统生成的表单,如创建时间,更新时间,创建人员ID,更新人员ID。并将这些通过系统来处理。
重写beforeSave()方法
public function getNewsTypeList()
{
//$newsType=NewsType::model()->findAll();等同于下面一行
$newsType=self::model()->findAll();//注意findAll中不加参数的意义。读取全部数据。
return CHtml::listData($newsType, 'id', 'news_type_name');
}
·CHtml::listData的使用
·form->dropDownList的使用
---------------------------------------------------------------------------------------
3_5_3_extension_ckeditor.mov
---------------------------------------------------------------------------------------
主要完善上一集中新闻发布系统中的新闻内容(textarea),这一集主要讲述由CKeditor插件的使用。
将CKkceditor扩展解压后复制到application.extensions目录下
$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/",
) );
---------------------------------------------------------------------------------------
3_5_4_fk_relation.mov
---------------------------------------------------------------------------------------
对文章列表中的处理:默认是Type和Status显示的是数字,现在要将它修改为对应的名称。
有两种方法:
本集主要讲解通过模型中的relation方法实现
以前是通过自定义方法实现,如下
模型中代码:
public function getNewsTypeName($id)
{
//$newsType=self::model()->find('id=:id',array(':id'=>$id));
$newsType=self::model()->findByAttributes(array('id'=>$id));
return $newsType->news_type_name;
}
视图中代码:
<?php echo CHtml::encode(NewsType::model()->getNewsTypeName($data->type_id)); ?>
---------------------------------------------------------------------------------------
3_6_CGridView_security.mov
---------------------------------------------------------------------------------------
admin/news/admin
关于CGridView相关知识
·模型News的attributeLabels方法
或者直接在视图中的widget中定义
'columns'=array(
...
array('name'=>'news_title','type'=>'raw','header'=>'在这里定义',...
在API中查找:CDataColumn查看详情。
·CHtml:link()方法
·CHtml::encode()方法及意义
yiiblog.info@gmail.com
---------------------------------------------------------------------------------------
4_1_1_view.mov
---------------------------------------------------------------------------------------
创建了一个控制器:viewAndTheme,以该控制器进一步讲解YII的view结构。
YII的view是三层结构
$this->render('index');这里的视图index.php内容是“最里层”
上一层:column1.php
上一层:main.php
了解view的三层结构并了解他们之间的关系。
---------------------------------------------------------------------------------------
4_1_2_view_adv.mov
---------------------------------------------------------------------------------------
YII view能做什么?
http://csstemplatesmarket.com 模板站
从该网站下载个模板,利用view三层结构显示。并模拟数据来演示过程。
$this->render('newPage',array(
'newsData'=>$newsData,
));
newPage.php视图为最里层。那如何在最外层显示$newsData的数据呢?
如果在最外层print_r($NewsData);则显示
PHP Error
Undefined variable: newsData
解决办法:利用OO特性解决
在控制器中定义:public $navData='';
$this->navData=$NewsData;
在最外层用$this->navData来获取数据。
---------------------------------------------------------------------------------------
4_1_3_newTheme.mov
---------------------------------------------------------------------------------------
主题的使用
1、配置文件
'theme'=>'YiiBlog_2012',
如果没有对应主题怎么办?YII的流程(没有->默认->YII总有个备用方案,除非连最后备用方案都被删除了)
2、主题手工建
themes
--YiiBlog_2012
----css
----images
----js
----view
--------viewAndTheme
------------newTheme.php
--------layout
------------columnYiiBlog2012.php
------------mainYiiBlog2012.php
3、知识点
echo Yii:app()->baseUrl;
/yii_go_part2
echo Yii:app()->theme->baseUrl;
/yii_go_part2/themes/YiiBlog_2012
4、流程:
a.YII首先扫描themes文件夹。
b.有没有main.php配置中配置的主题目录。如果有继续在里面找,没有则在protected/view目录下找
在建主题YiiBlog_2013的时候,并没有手工建上述目录及类似文件。而是直接在protected/view目录及layouts目录下建的。当没有找到对应主题,则在此目录下找。
5、boylee视频中:如果theme不存在,在项目开发中,在原view下备份主题相同文件。-->有这必要?感觉这样有点混乱。
---------------------------------------------------------------------------------------
4_2_1_basic_upload.mov
---------------------------------------------------------------------------------------
官网资料:http://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model
步骤:
1、新建controller。controller name:upload
2、新建Item模型,具体代码看上面链接内容
class Item extends CActiveRecord(需连接数据库,而数据中又没有Item表,导致执行失败)
class Item extends CFormModel(只收集信息,不提交到数据库)
3、新建view
<?php echo CHtml::form('','post',array('enctype'=>'multipart/form-data')); ?>
<?php echo CHtml::activeFileField($model, 'image'); ?>
<?php echo CHtml::submitButton('SubMit'); ?>
<?php echo CHtml::endForm(); ?>
4、
$model->image=CUploadFile::getInstanceByName('Item[image]');
或
$model->image=CUploadFile::getInstance($model,'image');
5、
$model->attributes=$_POST['item'];
...
$imageName='aaa.jpg';
$model->image=$imageName;
if($model->save())
{
echo 'success';
}
6、如何对上传的图片进行验证?
if($model->validate(array('image')))
{
$model->image->saveAs(Yii::app()->basePath.'/../up/'.$imageName);
}
else
{
print_r($model->errors);
exit;
}
---------------------------------------------------------------------------------------
basic.mov
---------------------------------------------------------------------------------------
非常基础,对YII完全不了解的童鞋观看。
最后在修改“面包xue”的home链接时,如何改为TelBook链接中的页。
办法是在main.php配置文件中增加配置项:
'defaultController'=>'telBook',
表示默认条件下打开的控制器。这里为执行telBook控制器的index方法。
或写为:'defaultController'=>'telBook/index',
---------------------------------------------------------------------------------------
4_2_2_adv_ajax_upload.mov
---------------------------------------------------------------------------------------
1、https://github.com/blueimp/jQuery-File-Upload/wiki