BoyLee关于YII基础视频教程备注

看完一遍,感觉比较基础,适合对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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值