当前位置:首页 > 日记 > 正文

在PHP的Yii框架的使用一些错误的解决方法和建议

在PHP的Yii框架的使用一些错误的解决方法和建议
本文的目的是在Yii的开发过程中,记录的小问题的解决方案不全面、不权威,不是一个教程。这是我写的,我认为它可以解决问题,你可以使用它在未来,所以记住它。

在1中引入js和CSS文件。Yii。

让我们从最简单的问题开始。这不是问题,它只是一个语法,我们假设js和受保护的文件放在js文件夹的同一层,CSS和受保护的文件放在CSS文件夹的同一层,好的,这是规范…我们可以在相应的视图界面中按照下面的文字编写,参数css和js函数是不一样的。哦...(这是因为一个小时之前)。

注册js文件的第二个参数是JS的位置,可选三:cclientscript::在cclientscript头部pos_head::在cclientscript开始对身体pos_begin::在身体的末端pos_end,没有特殊要求不填…注册CSS文件的第二个参数是介质,而且对这里的学生感兴趣,现在默认是好的…

JS如jQuery,registercorescript的使用不会导致莫名其妙的错误…
文件
Yii::APP()->注册-> registerscriptfile(Yii应用程序::()-> URL地址。' / / project1 js js,cclientscript::pos_head);
css文件
Yii::APP()->注册-> registercssfile(Yii应用程序::()-> URL地址。' / / CSS的CSS项目。);
jQuery文件
Yii::APP()->注册-> registercorescript('jquery);
2。一isnewrecord修复

Yii模型的isnewrecord属性是非常有用的,可以在一个基于该属性的分情况讨论。然而,如果我们开始交易机制或其他情况下,数据的插入和回滚。当时,有数据库中没有记录,但isnewrecord是假,即它不是一个新的记录。解决的办法是使用主键访问数据库以确定它是否是一个新的记录或没有,在我们使用这个属性,我们应该处理它的下面。下面的模型后,和主键ID:
如果(!元模型-> isnewrecord)
{
db_exist美元=后::模型()-> findbypk(元模型-> ID);
如果($ db_exist = null)
为模型-> isnewrecord =真;
}
3。Yii产生隐藏的输入字段

虽然很容易编写一个输入字段(不显示:无),有时不能通过Yii的形式编码格式支持。不管怎样,只要一句话。
HiddenField(元模型,'name');>
isnewrecord)echo $形式->隐藏域(元模型,'path,阵列('size= > 60,'maxlength= > 128,'id' = > 'path1 '));
4。一代的下拉菜单

很多时候我们在形式上需要一个下拉菜单,和Chtml的列表数据是很好的在这个时候。如果在我们的数据库中只有很少的领域是可能的,如0和1,可以写在下面:

echo $表-> DropDownList(元模型,'is_marry,阵列(0= >‘没有',‘= >)));
在这个时候,你看到的是是否下拉菜单中,选择是的时候,这场被提交,现场是1,没有0。当然,往往不仅简单,我们可以添加一个功能模型来生成下拉菜单的数组,然后把它称之为观。这个函数可以写入数据本身或在数据库中找到。使用下面列表数据,具体的意思是,在模型的ID作为键,名称值。
以模型形式写的**
公共功能getuseroptions()
{
模型:模型:美元=用户()->所有();
模型:模型:美元=用户()-> findallbyattributes(阵列('is_regeister'=>1));
返回chtml::列表数据(合模型,'id','name');
}

在视图中编写的接口
echo $表-> DropDownList(元模型,'user_id ',用户::模型()-> getuseroptions()));
5。一打开交易机制

当您保存对数据库记录的同时,你可能需要打开交易机制,一开一个交易机制,它是很容易的,只要三句就够了。
开放事务机制。
美元交易= Yii应用::()->数据库->开始();
尝试
{
提交的成功
$事务>提交();
}
catch(例外E)
{
$事务>回滚();
}
像这样更完整:

如果($ _post { 'modela})
{
开放事务机制。
美元交易= Yii应用::()->数据库->开始();
尝试
{
*这里省略了一堆逻辑。
元模型->保存();
60美元->保存();

提交的成功
$事务>提交();
美元->重定向(阵列(','id' = > $模型-> ID));
}
catch(例外E)
{
$事务>回滚();
}
}
但我一般都会像下面这样,我的经验有什么好处…
如果($ _post { 'modela})
{
开放事务机制。
美元交易= Yii应用::()->数据库->开始();
尝试
{
$验证=真;

*这里省略了一堆逻辑。
有效期=美元美元模型->保存();
验证$ =有效的$验证;

在这里继续逻辑省略号
有效= $ 60美元->保存();
验证$ =有效的$验证;

提交的成功
如果(验证)
{
$事务>提交();
美元->重定向(阵列(','id' = > $模型-> ID));
}
其他的
{
成功不是回滚。
$事务>回滚();
}
}
catch(例外E)
{
$事务>回滚();
}
}

6。关联表查询同一字段错误。

有时我们构建两个表,但是这两个表具有相同的字段。当我们寻求与cdbcriteria相关的查询,如果没有额外的设置,会出现查询错误,这可能意味着MySQL语句模糊。在这个时候,我们建立了一个别名在主桌,然后检查相关领域和添加名字的线。

例如,两个模型、一个帖子和一个用户都有一个ID,我们可以写如下:
标准=新cdbcriteria美元;

标准;

$标准-> =阵列(用户的);

$标准->比较('post。ID,$ POST -> ID,真的);

元:=;

7。文件上传

这不一,基本上是原生的HTML和PHP,懒得分,就把它放在这里。

以下是HTML,对您自己的URL、ID和名称的操作是由您自己定义的。
文件上传

这是服务器端接收和保存文件的代码,文件最后保存在所附文件夹的文件夹中:
如果(isset($ _files { 'file1 ' }))
{
xlsfile美元美元'file1_files { } =;
tmp_name美元美元'tmp_namexlsfile { } =;
获取文件名
file_name美元= basename($ xlsfile_name);

如果($ xlsfile {错误} > 0)
{
文件上传错误!请再试一次。;
出口;
}
其他的
{
如果(file_exists ( / / 附TMP。$ file_name))
文件已经存在!这一次不会被保存!;
其他的
{
如果(!is_dir(连接 / / tmp))
{
创建一个新文件夹,默认权限为777,真正的意思是您可以通过递归创建。
如果(!mkdir(连接 / / TMP
{
找不到附加的文件夹,并创建一个失败!;
出口;
}
}

此函数仅用于移动文件上传文件。
move_uploaded_file($ tmp_name,连接 / / 差。file_name美元);
}
}
}
以下是当前日期的文件夹,将现有文件从old_file路径/文件相同的连接将这里命名
创建一个文件夹
日期=日期('y-m-d美元,时间());
美元str_replace日期=(-,$日);
$;
如果(!is_dir($dir))
{
如果(!mkdir($迪尔,0777,真的))
{
退出(无法创建文件夹!);
}
}

移动文件
file_name美元= basename($ old_file);
为完成=重命名(old_file美元美元美元,迪尔。file_name);
如果(!为完成)
{
退出(无法移动文件!);
}

8.yii场景和安全领域

看看当前的模型场景:
var_dump(元模型->情景);
查看现场的安全领域,安全领域意味着数据不会被过滤掉的Yii当用户提交它。发现有些网站上提交的东西都是他们中的一些人,并花了很长时间才知道的,部分是在现场现场过滤。

ARR为美元美元模型-> getsafeattributenames(元模型->情景);
var_dump($ ARR);
强制分配避免了规则过滤field.setattributes被迫取消一安全过滤,只要二参数分配错误的。但这只能是有效的模型。如果要筛选已定义的所有字段,则需要定义场景,然后在规则中指定安全字段。
如果(isset($ _get { 'po ' }))
元模型-> setattributes($ _get { 'post},假);

检查日期格式合法性

有时我们需要检查用户填写的日期是否合法,我们可以使用以下功能。
功能checkdatetime(美元美元中,格式=当前H:我:)
{
$时间= strtotime(合中);
checkdate美元(美元=日期格式,为时间);

返回的checkdate = = $中;
}

Yii绘制多模型

我相信新手会觉得奇怪。在_form形式绘制一个模型,然后提交给控制器保存数据。如果我们想渲染多个模型,我们该怎么做

接下来,我们假设有两个模型类,即人和地址分别。我们要做的就是在一个人_form渲染几个地址模式,这意味着一个人可以有几个地址。基本的想法很简单,就是你定义的渲染模型的控制器,然后将其发送给视图界面,最后收到数据后在控制器的主要问题。是写法律,我相信以下都是可以理解的,和有问题的童鞋留言。
在控制器中。

新的人;
地址模式 / * $地址存储阵列,把你做的。
地址=阵列(美元);

如果(isset($ _post { 'person ' }))
{
元模型->属性= $ _post { 'person};
*这里省略了一堆逻辑。
foreach($ _post { 'addr'} one_addr美元)
{
$地址=新地址();
$地址->属性= $ one_addr;
*这里省略了另一堆逻辑。
}
}

美元->渲染('创建的阵列(
模型= $模型,
地址= > $地址,
));
在视图中。

可以输出多个模型
Num =数美元($地址);
($ i = 0;$ i;
{
echo $表-> labelex($地址{我},{ { $我} }邮编);
echo $表-> TextField($地址{我},{ { $我} }邮编
…;
}

也可以通过数字指定模型*的输出。
echo $表-> labelex($地址{ 0 },{ 0 }邮编);
echo $表-> TextField($地址{ 0 },{ 0 }邮编

相关文章

Javascript通过获取HTML标记属性类实现多

Javascript通过获取HTML标记属性类实现多

选项卡,属性,多个,标记,方式,本文演示了如何通过获取HTML标签属性类来实现多个选项卡,供大家参考,具体实现方法如下: 本机Javascript通过获取html标签属性类实现多个选项卡。 {。 清楚:两者; 保证金:20px汽车; 填料:10px; 宽度:680px; 溢出:隐藏; } tab.tab-…

我不想收到QQ空间动态更新的QQ空间

我不想收到QQ空间动态更新的QQ空间

空间,动态更新,常见问题,我不想,电脑软件,如果您的空间动态不想显示好友空间更新的内容,您可以参考以下两种操作方法: 方法一:取消对朋友的关注; 登录你的QQ空间,在导航栏点击' ';个人中心;在屏幕右侧点击右';设置'图标'; 选择‘注重树立…

用ps合成创造性斑马图像

用ps合成创造性斑马图像

图像图像,斑马,创造性,电脑软件,ps,斑马和大象在一起吗太有创意了 首先,找出两个相似的角度,为下一步合成材料做准备。 用大象的头把大象的头转成黑白相间的,因为斑马只有黑白相间的2种颜色,我们必须把大象的头变成黑白相间的。 三、把斑马头掌…

Javascript中的这个关键字使用详细的解决

Javascript中的这个关键字使用详细的解决

解决方案,关键字,详细,电脑软件,Javascript,和其他许多面向对象语言一样,Javascript中有一个关键字,这个函数用于指向调用这个方法的对象: 如果函数被function.call或function.apply,那么这个点的呼叫/第一个参数应用。如果参数为null或未定义,则指向…

新手:PS超强排版

新手:PS超强排版

新手,电脑软件,PS,这本教科书是向朋友介绍PS的超级排版技巧。这个教程很实用。值得学习。建议像你这样的朋友一起学习,希望能对你有所帮助。 新手必看:PS超级排版技巧!…

甜蜜恋人的签名,恋人签名的签名

甜蜜恋人的签名,恋人签名的签名

恋人,甜蜜,电脑软件,因为你在我心里,你会有点脸红 因为你想,会轻声叹息 流星雨来了,我拥抱你,期待一辈子。 北极星穿过,你和我手牵手旋转,期待相伴一千年。 谁说女神一定是女朋友,而女朋友可以是女神。 谁说男神一定是男朋友,男朋友也可以是男人。 …

js方法确定孩子的窗体是否关闭。

js方法确定孩子的窗体是否关闭。

窗体,方法,孩子,电脑软件,js,本文介绍了用JS判断孩子是否闭合的方法,供大家参考: 功能insidemessageadd(){ / / window.open()获取子窗体 Tip= opendialog('uploadfile。htmltp = nbtz ','msg ',650, 180); 开始 / /定时器,确定是否关闭子窗体 定时…

PS图象处理软件是在寒冷的冬天的阳

PS图象处理软件是在寒冷的冬天的阳

阳光,调制,是在,图象,处理软件,图片是夏天,关键是改变颜色。它需要把图片中的黄绿色变成近棕色的蓝色和红色,并柔化主色调,然后在顶部的边缘角上渲染一点阳光。 图片是夏天,关键是改变颜色。它需要把图片中的黄绿色变成近棕色的蓝色和红色,并柔…

PS与SAI相结合的纯古典美人画封面

PS与SAI相结合的纯古典美人画封面

教程,画图,封面,古典,美人,结果看起来很干净简洁,但绘画的过程更繁琐,因为当画细腻的时候,要表现出人物的性格和魅力,这样的作品是完美的。 最终效果 1、打开下面的图所示的线稿,不可追溯到互联网。复制一层线稿层,填充白色背景,降低线稿图层的…

ai镂空图形怎么做人工智能教程制作

ai镂空图形怎么做人工智能教程制作

图形,人工智能,教程,怎么做,电脑软件,ai镂空图形怎么做在CDR,你可以简单地画空心画。在PS中,您还可以使用区域选择剪裁来制作镂空图形。但是我们如何在正确的软件AI中制作镂空图形呢下面是AI的详细教程,创建一个镂空的图形,可以由朋友们参考。 …

儿童节如何用PS制作61个快乐儿童饼

儿童节如何用PS制作61个快乐儿童饼

文本,儿童节,饼干,如何用,特效,61如何使用PS制作儿童饼干特效为了给孩子们带来61的快乐,我们可以使用孩子们最喜欢的曲奇制作文本,并在下面分享详细的教程。 如何制作61个快乐儿童饼干特效文本 1。准备一张饼干的图片,最好是稍大一点的。 2,截…

ps快速合成粒子散射效果的冷照片

ps快速合成粒子散射效果的冷照片

照片,粒子,效果,快速,电脑软件,本教程是介绍ps粒子弥散效果的朋友快速合成的方法,很酷的合成照片,教程出来的效果很酷,不是很好,新手也可以来参考一下,让我们看看。 朋友你好,这个ps快速合成粒子散射效果的很酷的照片,我刚学过的课程,制作并不难。…