CakePHP 3.0.0-RC1 发布
如何开启新的一年?拥有最先进、最灵活的 CakePHP 版本,在您的项目中使用它!
CakePHP 核心团队很自豪地宣布 CakePHP 3.0.0 的第一个候选版本。自从我们的上一个测试版发布以来,这段时间非常紧张。我们一直在忙着打磨大部分的毛边,社区帮助我们找到了这些问题。
这次打磨冲刺意味着与 beta3 相比,有一些破坏性的 API 更改,特别是在验证子系统方面,因为在之前的实现中发现了许多缺陷。
下面列出了 3.0.0-rc1 中引入的新特性和更改
重新设计的验证
验证过程被分成两个阶段。第一阶段是面向用户的验证类型,自从上一个版本发布以来,它没有改变,除了执行的位置和时间。
在之前的版本中,您会这样做
`
$article=$this->Articles->newEntity($this->request->data);
$this->Articles->save($article,['validate'=>'myCustomValidatorName']);
`
但现在,面向用户的验证是在创建实体时执行的,而不是在保存实体时执行的。这要求您将验证选项传递给 newEntity 或 patchEntity 方法
`
$article=$this->Articles->newEntity($this->request->data,[
'validate'=>'myCustomValidatorName'
]);
$this->Articles->save($article);
`
需要注意的是,验证失败的字段不会被复制到生成的实体中。
第二步验证,我们称之为“应用程序规则”,是在保存或删除实体时完成的。规则检查步骤旨在检查应用程序完整性,例如列的唯一性、基数或外键约束
`
//InUsersTable.php
publicfunctionbuildRules(RulesChecker$rules){
$rules->add($rules->isUnique('email'));
return$rules;
}
`
应用程序规则还可以用于执行业务逻辑约束,例如状态机和工作流状态。
validate() 和 validateMany() 方法已从 Table 类中删除。
您可以在 规则检查器文档 中了解更多关于应用程序规则系统的信息。
新的错误页面
包含异常堆栈跟踪的错误页面已重新设计,使其更容易阅读,并更容易发现最初导致错误的原因。新外观灵感来自 Rails’ better errors 插件
新的 Bake 插件
cake bake 命令现在是一个插件。这将有助于我们以更高的速度演进它的代码,并引入新的代码生成器和配置选项。
关于 bake 的一个重要变化是,它现在使用 CakePHP 的 View 系统来渲染模板。这意味着可以将监听器附加到 Bake.beforeRender 和 Bake.afterRender 事件,以修改 bake 的输出。
此外,模板语法已更改,使其更具可读性。如果您过去有自己的 bake 模板,则需要更新它们以使用新的语法,该语法使用 erb 风格的标签。要获得 Bake 插件,请运行
`
composerrequirecakephp/bake=dev-master--dev
`
并在您的应用程序 bootstrap_cli.php 文件中加载它
Plugin::load(‘Bake’);
无表表单
应大众要求,现在有一个 Form 对象,它能够定义模式并验证表单数据,而无需使用 ORM 表或实体
`
publicfunctionadd()
{
$contact=newContactForm();
if($this->request->is('post')){
if($contact->execute($this->request->data)){
$this->Flash->success('Wewillgetbacktoyousoon.');
return$this->redirect(['action'=>'add']);
}
$this->Flash->error('Therewasaproblemsubmittingyourform.');
}
$this->set('contact',$contact);
}
`
您可以在此处了解更多信息 https://book.cakephp.com.cn/3.0/en/core-libraries/form.html