yii2中的场景使用

摘要:
让我们介绍yii2.0场景的使用。我担心有些人不知道。例如,post表中有三个标题图像内容字段。当我创建一篇文章时,我认为这三个字段都是强制性的,但当你修改它时,标题内容的两个字段是强制性的。iamage可以将它们留空。在正常情况下,[['title','content','image'],'required',],但我们在更改时只需要[['title','content'],'required'],但不能提交没有图像字段的表单。我们能怎么解决这个问题??场景可以帮助您解决此问题。这里是一个简单的场景示例。

下面给大家介绍一下 yii2.0 场景的使用。小伙多唠叨一下了,就是担心有的人还不知道,举个简单的例子,现在在 post表里面有 title image content 三个的字段,当我创建一个 post 的时候,我想三个字段全部是必填项,但是你修改的时候,title content 两个字段是必填的, iamge 可以不填写。正常的情况下, [['title', 'content', 'image'], 'required',], 但是我们更改的时候 只需要 [['title', 'content'], 'required'], 就可以了,但是少了 image 字段 我们的表单就无法提交,这种问题怎么办啊?? 场景可以帮你解决这种问题,下面是一个简单的场景实例。

1、首先我们在 model 里面定义一下场景 类名必须是 scenarios()

public function scenarios()
{
    return [
        'create' => ['title', 'image', 'content'],
        'update' => ['title', 'content'],
    ];
}

2、好的,如上所示,场景的基本设置我们就已经完成一部分了,下面我们设置 rules() ,调用场景我们用 on 关键字

[['title', 'content'], 'required', 'on' => ['create', 'update']],
[['image'], 'required', 'on' => 'create'],
[['image'], 'image', 'enableClientValidation' => true,   'maxSize' => 1024, 'message' => '您上传的文件过
大', 'on' => ['create']],

on 指定的就是场景,一个场景用字符串,多个场景用数组

3、好的,model 里面我们就设置完毕了 现在开始调用吧。 Controller 里面

$model = $this->findModel($id);
$model->setScenario('update'); or $model->scenario = 'update';

免责声明:文章转载自《yii2中的场景使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android中事件监听示例UITableview 上提刷新下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

订单减库存设计

$goods->query('update order set  = store- num where  store>=num and goodID = 12345'); $goods->query('update order set  = store- num where  store>=num and goodID = 123...

spring ---JdbcTemplate

1.JdbcTemplate Spring提供的一个操作数据库的技术JdbcTemplate,是对Jdbc的封装。 JdbcTemplate可以直接操作数据库,加快效率,而且学这个JdbcTemplate也是为声明式事务做准备,毕竟要对数据库中的数据进行操纵! JdbcTemplate中并没有提供一级缓存,以及类与类之间的关联关系!就像是spring提供的...

MyBatisPlusupdate更新操作的三种方法

根据id更新 User user = new User(); user.setUserId(1); user.setAge(29); userMapper.updateById(user); 条件构造器作为参数进行更新 //把名字为张三的用户年龄更新为18,其他属性不变 UpdateWrapper<User> updateWrapper =...

事务使用心得-事务隔离级别-DB2数据(一)

org.springframework.dao.DeadlockLoserDataAccessException: ### Error updating database.  Cause: com.ibm.db2.jcc.am.SqlTransactionRollbackException: DB2 SQL Error: SQLCODE=-911, SQ...

幂等设计

最近做的项目的性能调优中关于幂等设计的一些总结 场景:假设有这样一个方法,包含了一些DB操作,check if existing then update else save. 如果两个线程同时去执行这个方法,并且他们处理的是同一条数据,期望应该是其中一个线程是save,另外一个是update。但是有可能线程的处理时间相当重合,线程A在check的时候,线程...

MongoDB批量更新和批量插入的方式

最近,在调试代码中发现向MongoDB插入或者更新文档记录时若是多条的话都是采用for循环操作的,这样的处理方式会造成数据操作耗时,不符合批量处理的原则;对此,个人整理了一下有关MongoDB的批量更新和批量插入的操作流程,如下所示: @Autowired privateMongoTemplate mongoTemplate; (1)批量插入示例如下: L...