Symfony中文手册
Symfony中文手册
设置
安装和设置Symfony框架
安装Composer
配置Web服务器
如何使用PHP的内置web服务器
如何创建和存储一个Symfony项目到Git中
如何安装或升级到最新版和未发布版的Symfony
配合Homestead/Vagrant 使用Symfony
设置或修复文件权限
创建页面
创建你的第一个Symfony页面
路由
路由
如何强制路由总是使用HTTPS或HTTP
如何在路由中使用服务容器的参数
如何从路由向控制器传递额外的信息
如何基于Host来匹配路由
在没有自定义控制器的情况下如何配置一个重定向
如何创建一个自定义的路由加载器
从数据库查找路由:Symfony CMF DynamicRouter
重定向包含尾斜杠的url
从数据库查找路由:Symfony CMF DynamicRouter
如何定义路由条件
如何令路由可视化并对其除错
如何通过条件来限制路由匹配
如何定义路由条件
如何在JavaScript中生成路由URLs
如何包容外部路由资源
如何在路由参数中允许“/”字符
如何定义可选的占位符
控制器
控制器
如何上传文件
如何自定义错误页
如何把控制器定义为服务
扩展对Action参数的解析
如何在控制器中手动验证一个CSRF Token
如何把请求转发到另一个控制器
如何在Symfony控制器中创建SOAP Web Service
模板
创建和使用模板
如何注入变量到所有的模板(全局Twig变量)
不使用自定义控制器时如何渲染模板
如何覆写第三方bundle的模板
如何检查你的Twig模板语法
如何使用继承来组织你的Twig模板
如何使用hinclude.js来嵌入异步内容
如何使用和注册带有命名空间的Twig路径
如何在模板中使用不同格式的输出
如何对模板输出进行转义
如何剥离Twig模板中的Debug信息
如何在模板中嵌入控制器
如何配置和使用模板服务
如何在Twig中通过app变量访问到User, Request, Session和更多对象
如何写一个自定义的Twig扩展
如何使用PHP模板而不是Twig
配置
配置Symfony(和环境)
在依赖注入类内部使用参数
如何在服务容器中设置外部参数
如何覆写Symfony的默认目录结构
如何组织配置文件
如何掌握创建新的环境
使用MicroKernelTrait创建你自己的微框架
理解前端控制器、Kernel以及环境是如何一起工作的
资源(Assetic)
如何对一个特定的文件扩展来应用Assetic过滤器
如何使用Assetic进行资源管理
如何配合Twig函数使用Assetic来对图片进行优化
使用PHP类库来合并、编译以及最小化Web Assets
如何最小化CSS/JS文件(使用UglifyJS和UglifyCSS)
Bundle
Bundle系统
如何给Bundle创建友好的配置
如何在Bundle内加载服务配置
如何简化多个Bundle的配置
如何利用Bundle的继承来重写Bundle局部
可复用Bundle的最佳实践
如何安装第三方Bundle
如何覆写Bundle的任意部分
如何删除Bundle
命令行
控制台命令
数据库
数据库和Doctrine
如何注册事件监听和订阅器
如何处理Doctrine Associations / Relations
如何使用Doctrine扩展:Timestampable, Sluggable, Translatable等
控制台命令
如何注册自定义DQL函数
如何去使用Doctrine DBAL
如何处理生命周期回调
如何为若干Doctrine实现提供Model类
如何使用MongoDbSessionHandler存储session到MongoDB数据库
如何处理多个实体管理器和连接
如何使用PdoSessionHandler把session存储到数据库中
如何实现一个简单的注册表单
如何定义抽象类和接口之间的关系
如何从已存在的数据库中生成实体
Debugging
如何为Debug而优化你的开发环境
部署
如何部署Symfony程序
邮件
如何发送邮件
如何使用Gmail来发送邮件
如何在开发过程中处理邮件
如何在功能测试中测试邮件已发送
如何使用云来发送邮件
事件派遣
事件和事件监听
如何设置前后过滤程序
如何不使用继承来扩展一个类
如何不使用继承去定义一个方法
表达式
如何在Security, Routing, Services和Validation中使用表达式
表单
表单
如何改变表单的Action和Method
如何基于点击按钮选择验证组
如何去创建一个自定义的表单字段类型
如何创建一个表单类型扩展
如何去实现CSRF 保护
如何根据提交的数据选择验证组
如何使用数据转换器
如何使用submit()函数去处理表单提交
如何使用表单事件动态修改表单
如何嵌入表单
表单事件
如何嵌入表单集合
如何自定义表单渲染
如何从表单内部访问服务和配置
如何使用表单主题
如何使用inherit_data去减少代码冗余
如何让多个按钮提交表单
如何去控制表单渲染
创建自定义的类型猜测器
如何去单元测试你的表单
如何使用虚拟表单字段选项
如何定义验证组并使用它
没有数据类如何使用一个表单
如何上传文件
对包含了CSRF防护的表单页面进行缓存
前端
配合Symfony使用Bower
HTTP缓存
HTTP缓存
对包含了CSRF防护的表单页面进行缓存
缓存失效
多样化的HTTP缓存响应
使用Edge Side Include
HTTP缓存过期
HTTP缓存验证
如何使用Varnish加速我的网站
日志
使用Monolog做日志
性能
性能
安全
安全(Security)
如何建立一个传统的登录表单
针对LDAP服务器进行身份认证
怎样从数据库加载安全用户
如何通过Guard创建一个自定义的验证系统
如何添加“记住我”登录功能
如何模拟一个用户
如何自定义你的表单登录
创建自定义的User Provider
如何创建一个自定义的表单密码验证器
如何使用Api密钥(key)认证用户
如何创建自定义认证提供器
使用预认证安全防火墙
如何更改默认目标路径的行为
使用CSRF保护登录表单
如何动态选择密码加密算法
如何使用多个User Providers
如何使用多个Guard认证器
如何限定防火墙使其只允许通过指定请求
如何限定防火墙使其只允许通过指定主机
如何创建并启用自定义用户检查器
如何使用 Voter 检查用户权限
如何去使用Access Control Lists (ACLs)
如何使用先进的ACL概念
如何在不同的URL中强制使用HTTPS或HTTP
如何保护你应用程序中的服务和方法
安全的access_control是如何工作的?
如何手动给一个密码编码
如何检查你的依赖关系中的已知安全漏洞
服务容器
服务容器
如何导入配置Files/Resources
注入的类型
Lazy服务
如何注入实例到容器中
使用“工厂”来创建服务
如何创建服务的假名并标记服务为私有
如何去装饰服务
如何操作服务的标签
利用父服务来管理常规依赖
参数的引入
使用服务配置器来配置服务
如何令服务的参数/引用成为可选
如何从服务容器中取出Request
如何操作“服务定义”对象
如何定义非共享服务
如何在Bundles中对Compiler Passes进行操作
如何操作第三方Bundle提供的服务
如何注入基于复杂表达式的值
如何对服务容器和服务清单进行除错
Sessions
把locale信息“粘连”到用户的Session周期中
避免匿名用户启动Session
限制Session元数据写入
Symfony Session桥接遗留应用程序
Session代理样例
配置Session文件的保存目录
测试
测试
测试
CssSelector组件
DomCrawler组件
翻译
翻译
验证
验证(Validation)
如何动态地配置验证组
如何只应用你所有验证约束的子集(验证组)
如何验证标量值和数组
如何创建一个自定义的验证约束
如何按顺序应用验证组
如何处理不同的错误级别
如何翻译验证约束消息
>
Symfony中文手册
> 如何使用虚拟表单字段选项
如何使用虚拟表单字段选项
因为Symfony2.3,virtual选项被重命名为
inherit_data
。你可以在如何使用
inherit_data
去减少代码冗余文章中阅读关于这个新选项的更多信息。
上一篇:
如何去单元测试你的表单
下一篇:
如何定义验证组并使用它