symfony 1.3/1.ob娱乐下载4有什么新特性?
本教程是symfony 1.3/1.4的快速技术介绍。ob娱乐下载它适用于已经使用过symfony 1.2并希望快速学习symfony 1.3/1.4新特性的开发人员ob娱乐下载。
首先,请注意symfony 1.3与PHP 5.ob娱乐下载2.4或更高版本兼容。
如果您想从1.2升级,请阅读升级在symfony分布中找到的文件。ob娱乐下载您将获得将项目安全升级到symfony 1.3所需的所有信息。ob娱乐下载
梅勒
在symfoob娱乐下载ny 1.3/1.4中,有一个新的基于SwiftMailer 4.1的默认邮件程序。
发送电子邮件非常简单,只需使用composeAndSend ()
方法:
这个美元->getMailer()->composeAndSend(“from@example.com”,“to@example.com”,“主题”,“身体”);
如果您需要更大的灵活性,也可以使用组成()
方法,然后发送。这里有一个例子,如何添加一个附件的消息:
美元的消息=这个美元->getMailer()->组成(“from@example.com”,“to@example.com”,“主题”,“身体”)->附加(Swift_Attachment::fromPath(“/道路/ / / file.zip”));这个美元->getMailer()->发送(美元的消息);
由于mailer非常强大,请参阅文档以获得更多信息。欧宝官网下载app
安全
属性创建新应用程序时生成:应用程序
任务时,安全设置现在默认启用:
escaping_strategy
:当前值真正的
默认情况下(可以使用——escaping-strategy
选项)。csrf_secret
:系统默认生成随机密码,因此默认开启CSRF保护(可通过命令关闭)——csrf-secret
选项)。强烈建议您修改默认生成的密码,通过编辑settings.yml
配置文件,或使用——csrf-secret
选择。
小部件
默认的标签
当从字段名自动生成标签时,_id
后缀现在被删除:
first_name
名字(和以前一样)author_id
=>作者(之前是“作者id”)
sfWidgetFormInputText
的sfWidgetFormInput
类现在是抽象的。属性创建文本输入字段sfWidgetFormInputText
类。这个更改是为了简化表单类的内省。
I18n小部件
已添加以下小部件:
sfWidgetFormI18nChoiceLanguage
sfWidgetFormI18nChoiceCurrency
sfWidgetFormI18nChoiceCountry
sfWidgetFormI18nChoiceTimezone
它们中的前三个取代了现在已弃用的sfWidgetFormI18nSelectLanguage
,sfWidgetFormI18nSelectCurrency
,sfWidgetFormI18nSelectCountry
小部件。
连贯接口
小部件现在为以下方法实现了一个流体接口:
sfWidgetForm
:setDefault ()
,setLabel ()
,setIdFormat ()
,setHidden ()
sfWidget
:addRequiredOption ()
,使用addOption ()
,setOption ()
,setoption ()
,setAttribute ()
,setAttributes ()
sfWidgetFormSchema
:setDefault ()
,setDefaults ()
,addFormFormatter ()
,setFormFormatterName ()
,setNameFormat ()
,setLabels ()
,setLabel ()
,setHelps ()
,setHelp ()
,setParent ()
sfWidgetFormSchemaDecorator
:addFormFormatter ()
,setFormFormatterName ()
,setNameFormat ()
,setLabels ()
,setHelps ()
,setHelp ()
,setParent ()
,setPositions ()
验证器
sfValidatorRegex
的sfValidatorRegex
有一个新的must_match
选择。如果设置为假
, regex必须不匹配才能通过验证器。
的模式
选择sfValidatorRegex
现在可以是一个实例吗sfCallable
调用时返回一个正则表达式。
sfValidatorUrl
的sfValidatorUrl
有一个新的协议
选择。这允许你指定允许什么协议:
美元的验证器=新sfValidatorUrl(数组(“协议”= >数组(“http”,“https”)));
缺省情况下,允许使用以下协议:
http
https
ftp
ftp
sfValidatorSchemaCompare
的sfValidatorSchemaCompare
类有两个新的比较器:
相同的
,等于= = =
;NOT_IDENTICAL
,等于= = !
;
sfValidatorChoice
,sfValidatorPropelChoice
,sfValidatorDoctrineChoice
的sfValidatorChoice
,sfValidatorPropelChoice
,sfValidatorDoctrineChoice
类型时才启用验证器的两个新选项多个
选择是真正的
:
最小值
需要选择的值的最小数目马克斯
需要选择的值的最大数目
I18n验证器
添加了以下验证器:
sfValidatorI18nChoiceTimezone
默认错误消息
属性可以全局定义默认错误消息sfValidatorBase: setDefaultMessage ()
方法:
sfValidatorBase::setDefaultMessage(“要求”,“这个领域是必需的。”);
前面的代码将覆盖默认的'Required '。消息。注意,必须在创建任何验证器之前定义默认消息(配置类是一个好地方)。
请注意
的setRequiredMessage ()
而且setInvalidMessage ()
方法已弃用,并调用newsetDefaultMessage ()
方法。
当symfob娱乐下载ony显示错误时,要使用的错误消息确定如下:
ob娱乐下载Symfony寻找创建验证器时传递的消息(通过验证器构造函数的第二个参数);
方法定义的默认消息
setDefaultMessage ()
方法;方法添加消息时,它将退回到由验证器本身定义的默认消息
addMessage ()
方法)。
连贯接口
验证器现在为以下方法实现了一个流体接口:
sfValidatorSchema
:setPreValidator ()
,setPostValidator ()
sfValidatorErrorSchema
:addError ()
,adderror ()
sfValidatorBase
:addMessage ()
,setMessage ()
,setMessages ()
,使用addOption ()
,setOption ()
,setoption ()
,addRequiredOption ()
sfValidatorFile
创建sfValidatorFile实例时抛出异常,如果file_uploads
中已禁用。php . ini
.
形式
sfForm: useFields ()
新sfForm: useFields ()
方法从表单中删除除作为参数给出的字段外的所有非隐藏字段。有时显式地在表单中提供想要保留的字段,而不是取消所有不需要的字段,这更容易。例如,在向基本表单添加新字段时,它们不会自动出现在表单中,直到显式添加(想象一个模型表单,其中您向相关表添加了一个新列)。
类ArticleForm扩展BaseArticleForm{公共函数配置(){这个美元->useFields(数组(“标题”,“内容”));}}
默认情况下,字段数组也用于更改字段顺序。你可以通过假
正如第二个论点useFields ()
禁用自动重排序。
sfForm: getEmbeddedForm(名称)
属性可以访问特定的嵌入式表单- > getEmbeddedForm ()
方法。
sfForm: renderHiddenFields ()
的- > renderHiddenFields ()
方法现在呈现嵌入表单中的隐藏字段。添加了一个参数来禁用递归,如果使用格式化程序呈现嵌入式表单,这个参数很有用。
//渲染所有隐藏字段,包括嵌入表单中的字段回声美元的形式->renderHiddenFields();//不重复渲染隐藏字段回声美元的形式->renderHiddenFields(假);
sfFormob娱乐下载Symfony
新sfFormob娱乐下载Symfony
类将事件分派器引入symfony表单。ob娱乐下载您可以从表单类内部访问调度程序,如自我::$调度员
.symfony现在会通知以下表单事件:ob娱乐下载
form.post_configure
:在配置每个表单后通知此事件form.filter_values
:该事件在绑定之前过滤合并的、受污染的参数和文件数组form.validation_error
:每当表单验证失败时通知此事件form.method_not_found
:每当调用未知方法时,都会通知此事件
标识
每个新的symfonob娱乐下载y 1.3/1.4项目都包含一个标识
类,可用于扩展Form组件或添加特定于项目的功能。生成的表单sfDoctrinePlugin
而且sfPropelPlugin
自动扩展这个类。如果您创建额外的表单类,它们现在应该扩展标识
而不是sfForm
.
sfForm: doBind ()
污染参数的清洗已被隔离在开发人员友好的方法中,- > doBind ()
的参数和文件的合并数组- > bind ()
.
sfForm(教义|推动)::doUpdateObject ()
Doctrine和Propel表单类现在包含了一个开发人员友好型- > doUpdateObject ()
方法。此方法接收来自的值数组- > updateObject ()
已经处理过了- > processValues ()
.
sfForm: enableLocalCSRFProtection ()
而且sfForm: disableLocalCSRFProtection ()
使用sfForm: enableLocalCSRFProtection ()
而且sfForm: disableLocalCSRFProtection ()
方法,您现在可以轻松配置CSRF保护配置()
方法。
若要禁用表单的CSRF保护,请在其中添加以下行配置()
方法:
这个美元->disableLocalCSRFProtection();
通过调用disableLocalCSRFProtection ()
,即使您在创建表单实例时传递了CSRF秘密,CSRF保护也将被禁用。
连贯接口
一些sfForm
方法现在实现了一个流畅的接口:addCSRFProtection ()
,setValidators ()
,setValidator ()
,setValidatorSchema ()
,setWidgets ()
,setWidget ()
,setWidgetSchema ()
,setOption ()
,setDefault ()
,setDefaults ()
.
自动装卸机
所有syob娱乐下载mfony自动装填器现在都是不区分大小写的。PHP是不区分大小写的,现在symfony也是如此。ob娱乐下载
sfAutoloadAgain
(实验)
一个特殊的自动装弹机已被添加,只是用于调试模式。新sfAutoloadAgain
类将重新加载标准symfony自动加载器,并在文件系统中搜索相ob娱乐下载关类。最终的结果是你再也不用跑了ob娱乐下载symfony cc
在向项目中添加一个新类之后。
测试
加快测试
当您有一个大型测试套件时,每次进行更改时启动所有测试可能非常耗时,特别是在某些测试失败时。这是因为每次您修复一个测试时,您都应该再次运行整个测试套件,以确保您没有破坏其他东西。但是,只要失败的测试没有修复,就没有必要重新执行所有其他测试。从symfoob娱乐下载ny 1.3/1.4开始,测试:所有
而且ob娱乐下载symfony:测试
任务有一个——only-failed
(- f
(作为快捷方式)选项,强制任务仅重新执行在前一次运行期间失败的测试:
$ PHP ob娱乐下载symfony测试:all -only-failed
下面是它的工作原理:第一次,所有测试照常运行。但是对于后续的测试运行,只执行上次失败的测试。当您修复代码时,一些测试将通过,并将从后续运行中删除。当所有测试再次通过时,将运行完整的测试套件…然后你可以冲洗和重复。
功能测试
当请求生成异常时,调试()
方法现在输出一个可读的异常文本表示,而不是正常的HTML输出。它使调试更加容易。
sfTesterResponse
有一个新的匹配()
方法,该方法在整个响应内容上运行正则表达式。它对非xml类响应有很大帮助,其中checkElement ()
不可用。它也取代了权力较小的机构包含()
方法:
美元的浏览器->与(“响应”)->开始()->匹配(/我有\ d+苹果/ ')->//它以正则表达式作为参数匹配(”!/我有\ d+苹果/ ')->// a !开头表示正则表达式必须不匹配匹配(”!/我有\ d+苹果/我)->//你也可以添加正则表达式修饰符结束();
兼容的XML输出
测试任务现在能够输出一个JUnit兼容的XML文件——xml
选择:
$ PHP ob娱乐下载symfony test:all——xml=log.xml
简单的调试
为在测试套件报告失败的测试时简化调试,现在可以通过——跟踪
选项,以获得有关故障的详细输出:
$ PHP ob娱乐下载symfony test:all -t
石灰输出着色
对于symfob娱乐下载ony 1.3/1.4,石灰在着色方面做得很好。的lime构造函数的第二个参数几乎总是可以省略lime_test
:
$ t=新lime_test(1);
sfTesterResponse: checkForm ()
响应测试器现在包含了一个方法,可以轻松地验证表单中的所有字段都已呈现给响应:
美元的浏览器->与(“响应”)->开始()->checkForm(“ArticleForm”)->结束();
或者,如果你喜欢,你可以传递一个表单对象:
美元的浏览器->与(“响应”)->开始()->checkForm(美元的浏览器->getArticleForm())->结束();
如果响应包含多个表单,你可以选择提供一个CSS选择器来确定要测试DOM的哪一部分:
美元的浏览器->与(“响应”)->开始()->checkForm(“ArticleForm”,“# articleForm”)->结束();
sfTesterResponse: isValid ()
现在可以使用响应测试器检查响应是否是格式良好的XML- > isValid ()
方法:
美元的浏览器->与(“响应”)->开始()->isValid()->结束();
您还根据要传递的文档类型验证响应真正的
作为论点:
美元的浏览器->与(“响应”)->开始()->isValid(真正的)->结束();
或者,如果你有一个XSD或RelaxNG模式来验证,你可以提供这个文件的路径:
美元的浏览器->与(“响应”)->开始()->isValid(“/道路/ / schema.xsd”)->结束();
听context.load_factories
属性的侦听器context.load_factories
事件添加到功能测试。这在以前的symfony版本中是不可能的。ob娱乐下载
美元的浏览器->addListener(“context.load_factories”,数组(美元的浏览器,“listenForNewContext”));
一个更好的- >点击()
您现在可以将任何CSS选择器传递给- >点击()
方法,从而更容易在语义上定位所需的元素。
美元的浏览器->得到(/登录的)->点击(美元的形式[行动= " /登录")输入(type =“提交”)”);
任务
symfob娱乐下载ony CLI现在尝试检测终端窗口的宽度,并将行格式化以适应。如果无法检测,CLI默认为78列宽。
sfTask: askAndValidate ()
有一个新的sfTask: askAndValidate ()
方法向用户询问问题并验证其输入:
美元的答案=这个美元->askAndValidate(“你的电子邮件是什么?”,新sfValidatorEmail());
该方法还接受一个选项数组(更多信息请参阅API文档)。
ob娱乐下载symfony:测试
开发人员需要不时地运行symfony测试套件,以检查symfony在特定平台上是否正常工作。ob娱乐下载直到现在,他们必须知道prove.php
与symfony捆绑的脚本可以做到这一点ob娱乐下载。在symfoob娱乐下载ny 1.3/1.4中,有一个内置的任务,ob娱乐下载symfony:测试
从命令行启动symfony核心测试套ob娱乐下载件,就像任何其他任务一样:
symfonob娱乐下载y:测试
如果你习惯了跑步php / bin / prove.php测试
,您现在应该运行等效程序PHP data/bin/ob娱乐下载symfony symfony:test
命令。
项目:部署
的项目:部署
任务略有改进。它现在实时显示文件传输的进度,但只有当- t
选项被传递。如果不是,任务是沉默的,当然除了错误。说到错误,如果发生错误,输出会显示在红色背景上,以方便识别问题。
生成:项目
从symfoob娱乐下载ny 1.3/1.4开始,Doctrine是执行命令时默认配置的ORM生成:项目
任务:
$ PHP /path/to/ob娱乐下载symfony生成:项目foo
要为Propel生成项目,请使用——orm
选择:
$ php /path/to/ob娱乐下载symfony生成:项目foo——orm=驱动
如果你不想使用推进或教条,你可以通过没有一个
到——orm
选择:
$ PHP /path/to/ob娱乐下载symfony生成:project foo——orm=none
新——安装程序
选项允许您传递一个PHP脚本,该脚本可以进一步自定义新创建的项目。脚本在任务的上下文中执行,因此可以使用它的任何方法。比较有用的方法如下:installDir ()
,runTask ()
,问()
,askConfirmation ()
,askAndValidate ()
,reloadTasks ()
,enablePlugin ()
,disablePlugin ()
.
更多信息可以在这里找到帖子来自symfony官方博客。ob娱乐下载
在生成项目时,还可以包含第二个“author”参数,该参数指定用于@author
当symfony生成新类时ob娱乐下载,Doc标记。
$ php /path/to/ob娱乐下载symfony生成:项目foo“Joe Schmo”
sfFileSystem: execute ()
的sfFileSystem: execute ()
方法替换sfFileSystem: sh ()
方法具有更强大的功能。对象的实时处理需要回调stdout
而且stderr
输出。它还以数组的形式返回两个输出。您可以在。中找到其用法的一个示例sfProjectDeployTask
类。
task.test.filter_test_files
的测试:*
任务现在通过task.test.filter_test_files
事件。此事件包括参数
而且选项
参数。
增强sfTask: run ()
您现在可以将参数和选项的关联数组传递给sfTask: run ()
:
美元的任务=新sfDoctrineConfigureDatabaseTask(这个美元->调度程序,这个美元->格式化程序);美元的任务->运行(数组(“dsn”= >“mysql: dbname = mydb;主机= localhost '),数组(“名字”= >“大师”));
以前的版本,仍然有效:
美元的任务->运行(数组(“mysql: dbname = mydb;主机= localhost '),数组(“——name =主”));
sfBaseTask: setConfiguration ()
当调用扩展的任务时sfBaseTask
从PHP,你不再需要传递——应用程序
而且- - - env
选项- > run ()
.相反,您可以通过调用直接设置配置对象- > setConfiguration ()
.
美元的任务=新sfDoctrineLoadDataTask(这个美元->调度程序,这个美元->格式化程序);美元的任务->setConfiguration(这个美元->配置);美元的任务->运行();
以前的版本,仍然有效:
美元的任务=新sfDoctrineLoadDataTask(这个美元->调度程序,这个美元->格式化程序);美元的任务->运行(数组(),数组(”——应用程序= '.选择美元[“应用程序”],”——env = '.选择美元[“env”],));
项目:禁用
而且项目:启用
属性可以批量禁用或启用整个环境项目:禁用
而且项目:启用
任务:
$ PHP ob娱乐下载symfony项目:禁用prod
您还可以指定在该环境中禁用哪些应用程序:
$ PHP ob娱乐下载symfony项目:禁用prod前端后端
这些任务与它们之前的签名向后兼容:
$ PHP ob娱乐下载symfony项目:禁用frontend prod
帮助
而且列表
的帮助
而且列表
任务现在可以以XML格式显示它们的信息:
$ PHP ob娱乐下载symfony帮助测试:所有——xml
输出基于new对asXml () sfTask::
方法,它返回任务对象的XML表示形式。
XML输出对于第三方工具(如ide)非常有用。
项目:优化
通过缓存应用程序模板文件的位置,运行此任务可以减少运行时执行的磁盘读取次数。该任务只能在生产服务器上使用。不要忘记在每次项目更改时重新运行任务。
symfonob娱乐下载y项目:优化前端
生成:应用程序
的生成:应用程序
任务现在在项目的目录中检查框架目录数据/框架/应用程序
目录,然后默认为捆绑在核心中的框架。
从任务发送电子邮件
方法可以轻松地从任务发送电子邮件getMailer ()
方法。
任务中使用路由
方法可以轻松地从任务中获取路由对象getRouting ()
方法。
异常
半自动的
当在自动加载期间抛出异常时,symfony现在会捕获它们并向用户输出错误。ob娱乐下载这应该能解决一些“死机白屏”的问题。
Web调试工具栏
如果可能,web调试工具栏现在也显示在开发环境中的异常页面上。
推进集成
Propel已经升级到1.4版。请访问Propel的网站了解更多关于升级的信息(http://www.propelorm.org/wiki/Documentation/1.4)。欧宝官网下载app
推动行为
symfony用来扩展Propel的自定义构建器类已经ob娱乐下载移植到Propel 1.4的新行为系统。
推动:插入sql
之前推动:插入sql
从数据库中删除所有数据,请求确认。由于此任务可以从多个数据库中删除数据,因此它现在还显示相关数据库的连接名称。
推动:generate-module
,推动:generate-admin
,推动:generate-admin-for-route
的推动:generate-module
,推动:generate-admin
,推动:generate-admin-for-route
Tasks现在需要一个——actions-base-class
选项,该选项允许配置生成模块的操作基类。
推动行为
1.4在Propel代码库中引入了行为的实现。自定义symfony构ob娱乐下载建器已经移植到这个新系统中。
如果您想将本机行为添加到您的Propel模型中,您可以在schema.yml
:
Article: propel_behaviors: timestampable: ~
或者,如果你用旧的schema.yml
语法:
Propel: article: _propel_behaviors: timestampable: ~
禁用表单生成
属性的参数,现在可以禁用某些模型上的表单生成ob娱乐下载
推动行为:
UserGroup: propel_behaviors: symfony: ob娱乐下载form: false filter: false
请注意,您必须在该设置得到尊重之前重新构建模型,因为行为是附加到模型的,并且仅在重新构建之后才存在。
使用不同版本的Propel
使用不同版本的propel就像设置sf_propel_runtime_path
而且sf_propel_generator_path
配置变量ProjectConfiguration
:
/ /配置/ ProjectConfiguration.class.php公共函数设置(){这个美元->enablePlugins(“sfPropelPlugin”);sfConfig::集(“sf_propel_runtime_path”,/道路/ /推动/运行时的);sfConfig::集(“sf_propel_generator_path”,/道路/ /推动发电机的);}
路由
默认的需求
默认的\ d +
需求现在只应用于sfObjectRouteCollection
当列
选项为默认值。id
.这意味着当指定非数字列时,您不再需要提供替代需求。鼻涕虫
).
sfObjectRouteCollection
选项
一个新的default_params
选项已添加到sfObjectRouteCollection
.它允许为每个生成的路由注册默认参数:
forum_topic: class: sfDoctrineRouteCollection选项:default_params: section:论坛
CLI
输出彩色化
ob娱乐下载当您使用Symfony CLI工具时,Symfony会尝试猜测您的控制台是否支持颜色。但有时,symfony猜错了;ob娱乐下载例如当你使用Cygwin时(因为在Windows平台上颜色总是关闭的)。
从symfoob娱乐下载ny 1.3/1.4开始,您可以通过传递全局变量强制输出使用颜色——颜色
选择。
I18N
数据更新
用于所有I18N操作的数据从ICU项目
.ob娱乐下载Symfony现在有大约330个语言环境文件,与Symfony 1.2相比增加了大约70个。请注意,更新的数据可能与之前的略有不同,因此,例如,测试用例检查语言列表中的第10项可能会失败。
根据用户区域进行排序
对这个地区相关数据的所有排序现在也是根据地区执行的。sfCultureInfo - > sortArray ()
可以用来做这个。
插件
在symfonob娱乐下载y 1.3/1.4之前,除了sfDoctrinePlugin
和sfCompat10Plugin
的:
类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){//删除并启用你想要的插件这个美元->enableAllPluginsExcept(数组(“sfDoctrinePlugin”,“sfCompat10Plugin”));}}
对于使用symfony 1.3/1.4新创建的项目,插件必须在ob娱乐下载ProjectConfiguration
类,以便能够使用它们:
类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){这个美元->enablePlugins(“sfDoctrinePlugin”);}}
的插件:安装
任务自动启用它安装的插件(和插件:卸载
禁用)。如果您通过Subversion安装插件,您仍然需要手动启用它。
如果你想使用核心插件,比如sfProtoculousPlugin
或sfCompat10Plugin
,你只需要加上相应的enablePlugins ()
声明ProjectConfiguration
类。
请注意
如果从1.2升级项目,旧的行为将仍然是活动的,因为升级任务没有改变ProjectConfiguration
文件。此行为更改仅适用于新的symfony 1.3/1.4项目。ob娱乐下载
sfPluginConfiguration: connectTests ()
可以将插件的测试连接到测试:*
通过调用插件配置来完成任务- > connectTests ()
新方法setupPlugins ()
方法:
类ProjectConfiguration扩展sfProjectConfiguration{公共函数setupPlugins(){这个美元->pluginConfigurations[“sfExamplePlugin”]->connectTests();}}
设置
sf_file_link_format
ob娱乐下载Symfony 1.3/1.4尽可能将文件路径格式化为可点击的链接(即调试异常模板)。的sf_file_link_format
是用于这个目的的,如果设置了,否则symfony会找吗ob娱乐下载xdebug.file_link_format
PHP配置值。
例如,如果您想在TextMate中打开文件,请将以下内容添加到settings.yml
:
所有:.settings: file_link_format: txmt://open?url =文件:/ / % f&line = % l
的% f
占位符将替换为文件的绝对路径和% l
占位符将被替换为行号。
教义集成
Doctrine已经升级到1.2版本。请访问Doctrine的网站了解更多关于升级的信息(http://www.doctrine-project.org/documentation/1_2/en)。欧宝官网下载app
生成表单类
现在可以在Doctrine YAML模式文件中为symfony指定额外的选项。ob娱乐下载我们添加了一些选项来禁用表单和筛选器类的生成。
例如,在典型的多对多引用模型中,您不需要生成任何表单或筛选表单类。所以你现在可以做以下事情:
UserGroup: options: ob娱乐下载symfony: form: false filter: false columns: user_id: type: integer primary: true group_id: type: integer primary: true
表单类继承
当您从模型生成表单时,您的模型包含继承。生成的子类将尊重继承,并生成遵循相同继承结构的表单。
新任务
我们介绍了一些新的任务来帮助你开发Doctrine。
创建模型表
您现在可以为指定的模型数组单独创建表。它将先删除表,然后为您重新创建它们。如果您正在现有项目/数据库中开发一些新模型,并且不想破坏整个数据库,只想重新构建表的一个子集,那么这是非常有用的。
$ php ob娱乐下载symfony原则:create-model-tables Model1 Model2 Model3
删除模型文件
你经常会在YAML模式文件中更改模型、重命名、删除未使用的模型等。当你这样做时,你就有了孤立的模型、表单和过滤器类。方法手动清除与模型相关的生成文件原则:delete-model-files
的任务。
$ php ob娱乐下载symfony原则:delete-model-files ModelName
上述任务将找到所有相关的生成文件并报告给您,然后请您确认是否要删除这些文件。
清洁模型文件
方法可以自动执行上述过程,并找出磁盘上存在而YAML模式文件中不存在的模型原则:clean-model-files
的任务。
$ PHP ob娱乐下载symfony原则:清洁模型文件
上面的命令将您的YAML模式文件与已经生成的模型和文件进行比较,并确定应该删除哪些文件。然后将这些模型传递给原则:delete-model-files
的任务。在实际删除任何文件之前,它会要求您确认删除任何文件。
构建任何
新原则:建立
task允许您指定您究竟想symfony和Doctrine构建什么。ob娱乐下载此任务复制了许多现有组合任务中的功能,这些功能都已被弃用,而支持这种更灵活的解决方案。
的一些可能的用法原则:建立
:
$ PHP ob娱乐下载symfony原则:build -db -and-load
这将下降(: drop-db
)和创建(: build-db
)的数据库,创建中配置的表schema.yml
(:插入sql
),并载入夹具数据(:数据加载
).
$ PHP ob娱乐下载symfony原则:构建—所有类—然后迁移
这将构建模型(:建造模式
)、表格(:构建表单
)、表单过滤器(: build-filters
)并运行任何挂起的迁移(:迁移
).
$ PHP ob娱乐下载symfony原则:build -model -and-migrate -and-append=data/fixture /categories.yml
这将构建模型(:建造模式
),迁移数据库(:迁移
),并附加类别fixture数据(:data-load——append——dir=data/fixtures/categories.yml
).
有关更多信息,请参阅原则:建立
任务的帮助页。
新选项:——迁移
下面的任务现在包括一个——迁移
选项,该选项将替换嵌套的原则:插入sql
任务与原则:迁移
.
原则:构建所有
原则:build-all-load
原则:build-all-reload
原则:build-all-reload-test-all
原则:rebuild-db
原则:重载数据
原则:generate-migration——editor-cmd
的原则:generate-migration
任务现在包含一个——editor-cmd
选项,该选项将在创建迁移类后执行,以便于编辑。
$ php ob娱乐下载symfony原则:生成-migration AddUserEmailColumn——editor-cmd=mate
这个示例将生成新的迁移类,并在TextMate中打开新文件。
原则:generate-migrations-diff
这个新任务将根据旧的和新的模式自动为您生成完整的迁移类。
创建或删除特定的连接
现在可以在运行时指定数据库连接名称原则:build-db
而且原则:drop-db
:
$ PHP ob娱乐下载symfony原则:drop-db master slave1 slave2
日期设置器和获取器
我们添加了两个新的方法,用于检索Doctrine日期或时间戳值作为PHP DateTime对象实例。
回声美元的文章->getDateTimeObject(“created_at”)->格式(' m / d / Y ');
方法来设置日期值setDateTimeObject
方法,并传递有效的DateTime
实例。
美元的文章->setDateTimeObject(“created_at”,新DateTime(“09/01/1985”));
原则:迁移——下来
的原则:迁移
现在包括向上
而且下来
选项,这些选项将向请求的方向迁移您的模式一步。
$ PHP ob娱乐下载symfony原则:迁移—向下
原则:迁移——管制
如果您的数据库支持回滚DDL语句(MySQL不支持),您可以利用这个新的功能管制
选择。
$ PHP ob娱乐下载symfony原则:migrate—dry-run
输出DQL任务作为数据表
当您以前运行原则:dql
命令,它只会输出YAML数据。我们增加了一个新的——表
选择。此选项允许您将数据作为表输出,类似于在MySQL命令行中输出的方式。
所以下面的事情是可能的。
$ ./ob娱乐下载symfony doctrine:dql "FROM Article a"——table >> doctrine执行dql查询从文章 +----+-----------+----------------+---------------------+---------------------+ | id | author_id | is_on_homepage | created_at | updated_at | +----+-----------+----------------+---------------------+---------------------+ | 1 | 1 | | 2009-07-07 18:02:24 | 2009-07-07 18:02:24 | | 2 | 2 | | 2009-07-07 18:02:24 | 2009-07-07 18:02:24 | +----+-----------+----------------+---------------------+---------------------+ ( 2结果)
将查询参数传递给原则:dql
的原则:dql
Task也得到了增强,可以接受查询参数作为参数:
$ php ob娱乐下载symfony doctrine:dql "FROM Article a WHERE name LIKE ?
调试功能测试中的查询
的sfTesterDoctrine
类现在包含- >调试()
方法。此方法将输出关于已在当前上下文中运行的查询的信息。
美元的浏览器->得到(' /文章')->与(“原则”)->调试();
您可以仅查看通过向方法传递整数执行的最后几个查询,或者仅显示包含子字符串或通过传递字符串匹配正则表达式的查询。
美元的浏览器->得到(' /文章')->与(“原则”)->调试(' /文章/我的);
sfFormFilterDoctrine
的sfFormFilterDoctrine
类现在可以播种Doctrine_Query
对象通过查询
选择:
美元的过滤器=新ArticleFormFilter(数组(),数组(“查询”= >美元的表->createQuery()->选择(的标题,身体),));
via指定的表方法- > setTableMethod ()
(或者现在通过table_method
选项)不再需要返回查询对象。下列任何一项都有效sfFormFilterDoctrine
表的方法:
// symfony >ob娱乐下载= 1.2公共函数getQuery(){返回这个美元->createQuery()->选择(的标题,身体);}// symfony >ob娱乐下载= 1.2公共函数filterQuery(Doctrine_Query美元的查询){返回美元的查询->选择(的标题,身体);}// symfony >ob娱乐下载= 1.3公共函数modifyQuery(Doctrine_Query美元的查询){美元的查询->选择(的标题,身体);}
定制表单过滤器现在更容易了。要添加过滤字段,只需添加小部件和处理它的方法。
类UserFormFilter扩展BaseUserFormFilter{公共函数配置(){这个美元->widgetSchema[“名字”]=新sfWidgetFormInputText();这个美元->validatorSchema[“名字”]=新sfValidatorString(数组(“要求”= >假));}公共函数addNameColumnQuery(美元的查询,美元的领域,美元的价值){如果(!空(美元的价值)){美元的查询->引入(sprintf(CONCAT (% s。f_name, %1$s.l_name) LIKE ?',美元的查询->getRootAlias()),美元的价值);}}}
在早期版本中,您需要进行扩展getFields ()
除了创建一个小部件和方法来让它工作之外。
配置原则
你现在可以听这些事件了doctrine.configure
而且doctrine.configure_connection
来配置教义。这意味着只要在之前启用了插件,Doctrine配置就可以很容易地从插件中定制sfDoctrinePlugin
.
原则:generate-module
,原则:generate-admin
,原则:generate-admin-for-route
的原则:generate-module
,原则:generate-admin
,原则:generate-admin-for-route
Tasks现在需要一个——actions-base-class
选项,该选项允许配置生成模块的操作基类。
魔术方法文档标签
symfony添加到Doctrine模型中的神奇getter和setteob娱乐下载r方法现在表示在每个生成基类的文档头中。如果您的IDE支持代码补全,您现在应该看到这些getFooBar ()
而且setFooBar ()
方法显示在模型对象上,其中FooBar
是驼峰式大小写字段名。
使用不同版本的教义
使用不同版本的Doctrine就像设置sf_doctrine_dir
设置在ProjectConfiguration
:
/ /配置/ ProjectConfiguration.class.php公共函数设置(){这个美元->enablePlugins(“sfDoctrinePlugin”);sfConfig::集(“sf_doctrine_dir”,“/道路/ / lib /学说”);}
Web调试工具栏
sfWebDebugPanel: setStatus ()
web调试工具栏中的每个面板都可以指定影响其标题背景颜色的状态。例如,如果有优先级大于的消息,日志面板标题的背景颜色将更改sfLogger:信息
被记录。
sfWebDebugPanel
请求参数
属性可以指定在页面加载时打开的面板sfWebDebugPanel
参数设置为URL。例如,追加? sfWebDebugPanel =配置
会导致web调试工具栏在配置面板打开时呈现。
面板还可以通过访问web调试来检查请求参数request_parameters
选择:
requestParameters美元=这个美元->webDebug->getOption(“request_parameters”);
分音
槽的改进
的get_slot ()
而且include_slot ()
helper现在接受第二个参数,用于指定默认slot内容,如果slot没有提供任何内容则返回:
<?php回声get_slot(“foo”,“酒吧”)//如果槽位foo没有定义,输出bar<?phpinclude_slot(“foo”,“酒吧”)//如果槽位foo没有定义,输出bar
寻呼机
的sfDoctrinePager
而且sfPropelPager
方法现在实现迭代器
而且可数名词
接口。
<?php如果(数(美元寻呼机)):? >< ul ><?phpforeach(美元寻呼机作为美元的文章):? ><李> < ?php回声link_to(美元的文章->getTitle(),“article_show”,美元的文章)李? > < / ><?phpendforeach;? >< / ul ><?php其他的:? >< / p > < p >没有结果。<?phpendif;? >
视图缓存
视图缓存管理器现在接受参数factories.yml
.为视图生成缓存键已经用不同的方法进行了重构,以简化类的扩展。
中有两个参数factories.yml
:
cache_key_use_vary_headers
(默认值:真正的
):指定缓存键是否应该包括vary headers部分。在实践中,它表示页面缓存是否应该依赖于http头,如中所指定的不同
缓存参数。cache_key_use_host_name
(默认值:真正的
):指定缓存键是否应该包括主机名部分。实际上,它表示页面缓存是否应该依赖于主机名。
缓存更多
对象中是否有值,视图缓存管理器将不再拒绝缓存$ _GET
或$ _POST
数组。现在的逻辑只是在检查之前确认当前请求是GET方法cache.yml
.这意味着以下页面现在是可缓存的:
/ js / my_compiled_javascript.js吗?cachebuster123
/用户?页面= 3
请求
getContent ()
请求的内容现在可以通过getContent ()
方法。
把
而且删除
参数
当一个请求出现的时候把
或者一个删除
内容类型设置为的HTTP方法应用程序/ x-www-form-urlencoded
, ob娱乐下载symfony现在解析原始主体,并使参数像正常一样可访问帖子
参数。
行动
重定向()
的sfAction:重定向()
方法族现在与url_for ()
symfony 1.2引入的签名:ob娱乐下载
// ob娱乐下载symfony 1.2这个美元->重定向(数组(“sf_route”= >“article_show”,“sf_subject”= >美元的文章));// ob娱乐下载symfony 1.3/1.4这个美元->重定向(“article_show”,美元的文章);
这种增强也应用于redirectIf ()
而且redirectUnless ()
.
助手
link_to_if ()
,link_to_unless ()
的link_to_if ()
而且link_to_unless ()
helper现在与link_to ()
symfony 1.2引入的签名:ob娱乐下载
// ob娱乐下载symfony 1.2<?php回声link_to_unless($ foo,“@article_show ?id = '.美元的文章->getId())? >// ob娱乐下载symfony 1.3/1.4<?php回声link_to_unless($ foo,“article_show”,美元的文章)? >
上下文
你现在可以听了context.method_not_found
来动态地添加方法sfContext
.如果你从插件中添加了一个惰性加载工厂,这是很有用的。
类myContextListener{受保护的美元的工厂=零;公共函数listenForMethodNotFound(sfEvent美元的事件){美元的上下文=美元的事件->getSubject();如果(“getLazyLoadingFactory”= =美元的事件[“方法”]){如果(零= = =这个美元->工厂){这个美元->工厂=新myLazyLoadingFactory(美元的上下文->getEventDispatcher());}美元的事件->setReturnValue(这个美元->工厂);返回真正的;}}}
本作品在创作共用署名相似共享3.0未移植许可许可下获得许可。