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']);

`

但现在,面向用户的验证是在创建实体时执行的,而不是在保存实体时执行的。这要求您将验证选项传递给 newEntitypatchEntity 方法

 `
$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.beforeRenderBake.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

采用 PSR-2

我们最近为 CakePHP 和所有官方插件采用了 PSR-2 编码风格标准。您可以在 这篇博文 中了解更多关于原因的信息