如题如何设置
uid
可在model中指定
创建和更新时间可使用TimestampBehavior
自动填充TimestampBehavior
注意字段属性
如题如何设置
uid
可在model中指定
创建和更新时间可使用TimestampBehavior
自动填充TimestampBehavior
注意字段属性
假设有这么一个发送手机短信的组件需求
第一步先建立一个组件
common/components/ShortMsgService.php
<?php
class ShortMsgService {
public $accessKey;
public function send($phone,$message){
echo $this->accessKey , $phone , $message;
}
}
第二步配置加载组件
common/config/main.php
'ShortMsgService' => [
'class' => 'common\components\ShortMsgService',
'accessKey' => 'accessKey Here',
],
第三步在控制器中尝试使用组件
$sms = Yii::$app->ShortMsgService;
$sms->send('18588888888','Are you ok');
舰长的每个回答都可以给分的功能正在研发,大家敬请言无不尽,感谢哈
基本就是这么个意思吧,yii结构很灵活的
我感觉这样写没问题。
请问 yii2如何获得上一页的url以返回?Yii::app()->request->urlReferrer;
这个yii2上面使用报错
http://www.yiichina.com/topic/4923Yii::$app->user->setReturnUrl(Yii::$app->request->referrer); //只需要添加这句话就可以了
我在做一个图片多图片上传的功能 图片能上传成功 ,也能在视图页面正常显示。但是在二次修改的时候,一提交就没了 原因是在二次修改的表单里 你如果不选择图片 fileInput 表单里是空的所以就把数据库里的图片路径更新成空的了,我现在想到的解决办法是 (在二次修改的时候把原来已经上传的图片的路径显示在 fileInput 表单里,这样就可以避免了)
fileinput
是个例外,无论insert
操作还是update
,正常情况在表单中选择文件的地方是清空的,可能是w3c的定义。你也可以在接收POST数据之前
保存文件路径的字段的值,接收post数据之后
如果发现浏览器没有新文件upload,那么save
之前还原你之前保存的值即可。
你的方法也可以,有个负面影响就是用户体验会下降一些,和正常的文件上传表单感觉不一样。
骚年你确定你修改的model是findOne出来的而不是直接new出来的?
如果你在上传成功后添加数据库,那么插入库的时候没有把图片地址插库?
如果你的图片路径指的是本地路径的话,这样是行不通的,因为我记得OSX或者Linux系统是没办法获取这个路径的。
我的解决方案:
大家好,请问, 使用AR updateAll
是不是 不会触发 afterUpdate
等事件?
类似的内容 请问哪里查看? 代码中是否可以 在使用 updateAll
之后 手工触发 afterUpdate
事件?
updateAll()
只返回受影响的行数,那个行数在一个事件里能玩出什么名堂呢?所以afterUpdate对于updateAll来说没有任何意义。你想干什么,就在调用updateAll()
之后调用一个函数就好了,或者触发一个自定义的事件。
比较update()和updateAll()的区别。或者看这两个函数的框架源码。updateAll
不能触发 afterUpdate
可以自己注册事件,然后emit
afterUpdateAll 这个来触发
下面的是POST接收到的数据
Array
(
[_csrf] => MWhSQ3N3M0MGDgsoHz5jdW4mBwhHOUAuWiYHNkAtcRMGIBEFAiFsMw==
[Dynamic] => Array
(
[type] => 1
[title] => 这是标题
[images] => Array
(
[0] => http://f.cloud.com/143401345875600900.jpg
[1] => http://f.cloud.com/143401345242854600.jpg
[2] => http://f.cloud.com/143401345054916700.jpg
[3] => http://f.cloud.com/143401345542255100.jpg
)
[content] => 这是内容
[url] =>
)
)
这个是action的代码
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
images 是 text 类型,需要储存多张图片。
问题是:YII2 有没有自动序列化的功能并且储存到字段
如果没有怎么将序列化后的images赋值给POST
群里的回答:
程涛:
1 是写在rule里
2 写在beforsave
我来了,正如我轻轻的来,不带走一片云彩。$model->load(Yii::$app->request->post()) && $model->save()
这么写直接就是将post的值直接就存入了数据库,说好的$model->validate();
进行安全过滤呢?
虽然在save前会自动进行参数合法性过滤的。
对于rules规则自动过滤法则还没研究透,但有一个场景是肯定的,那就是对要存储的值设定个默认值,比如会员的开启状态,在会员注册场景的时候在rules规则里面进行某字段比如 status,将其设定为1。这个在rules规则里面设定毫无疑问。
就楼主的需求来看,个人感觉是,完全可以写在控制器里面了。
看完了另外一个问题才看到该问题,就顺便回答了。
希望解决你的问题!
我是鬼鬼,鬼一浪人
是也!20150612
虽然我不会但是我来看一下
重写afterValidate()方法应该可以做到
这样也可以。save()
方法保存之前,你先用一个分隔符号拆分 images
属性不就好了吗?
model里的beforeSave($insert)
用过么?骚年
个人对于这种数据的分割合并处理,都是卸载beforeSave里头的。不在action里头处理这些。
好高深的样子,涨姿势了
都说这么高深,那还让小白怎么活,帖出来beforeSave 如何解决的 @FatrBaby
版主,你这个问题怎么解决的哈,遇到跟你类似的问题了,求指点
1、做为一个组件怎么让JS显示到VIEW里
2、怎么让JS只显示一次在VIEW里
提供示例代码是最好 。
使用 asset 类进行管理 js 文件
yii2 redirect进行页面跳转的时候, 可以像页面传递数据?比如下面的代码
return $this->redirect(['member/security']);
我一般是操作数据库后进行跳转,到底操作成功否? 我想带个提示信息给页面,让页面显示一下然后提示信息就没了?
该怎么办?
我现在的做法是将提示信息存放到session中,然后跳转后用了一次就删掉! yii2中有更好的办法?
使用yii的flash数据,其实他也是session,哇哈哈哈哈!
为了保留一个完整的request-response流程,建议还是使用return response对象的方法。不过还有一种折中的办法就是封装一个显示信息的中间页,把你要显示的信息和url传过去,等显示完信息后,再跳转到目标地址。
不过我还是建议使用flash数据的方法。return $this->redirect(['member/security', 'id' => 1]);
这样不行吗?
高级模板下可以直接使用这个:
基础模板我没用过,不知道它那里有没有高级模板下 frontend/widgets/Alert.php 这个小插件,有的话也是可以用的。
$this->redirect( Yii::$app->getUrlManager()->createUrl(‘url’));
综合@shiyang和@nomeore两位大大的答案完成了需要的效果,感谢
return $this->success([‘/admin/index’]);
<fieldset>
<form class="subscriptionForm" method="post">
<input id="subscriptionForm" class="inputForm" type="text" value="Enter Your Email Address" onFocus="if (this.value=='Enter Your Email Address') this.value=''" onBlur="if (this.value==''){this.value='Enter Your Email Address'}" />
<input type="submit" id="submitButton" class="transition" value="Send">
</form>
</fieldset>
最好是上传一张图片为最佳
资源包里的js文件都是加载在尾部的,启用了layout。这样我在view里直接写javascript就在出现在引入其他js文件前面,导致无效,用registerJs格式又不好整,求办法!
想加载在头部,给你个例子,注意$jsOptions
那就用registerJsFile