问题标签 [symfony4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
symfony - symfony: How to set configuration parameters files for different environments?
How to setup a different configuration parameters file for each environment?
At the moment parameters in parameters.yml
are used in both dev
and prod
environment, but I need different parameters in order to deploy my app in prod.
symfony - 在 Symfony 3 中使用缓存组件的最佳实践
在 Symfony 3 中使用缓存组件的最佳实践是什么?
简单的例子:
如果我getCategoryById
从不同的地方(Controller、FormType、Twig 函数、Listener、...)调用(In Repository),我如何验证数据是否被缓存?
问题:
我不能在存储库中调用缓存组件,我不想在每个地方(isHint ...)编写和复制相同的代码。
问题:
那么最佳实践是什么?在所有组件和 Repository 之间创建中间缓存服务?
非常感谢 :)
php - 如何在 Symfony 4 中覆盖第三方包的资源?
我使用 Symfony Flex 进行了全新的 Symfony 安装,新的骨架属于下一个 Symfony 4 目录结构。接下来,我将从外部包中覆盖一些资源,如模板、翻译等。
我尝试为模板创建所有这些路径(开始),但没有任何效果:
templates/EasyAdminBundle/views/...
templates/Resources/EasyAdminBundle/views/...
app/Resources/...
(只是旧结构的证明)
我应该把我的资源文件放在哪里来覆盖第三方捆绑资源?
php - 如何在 Symfony4 结构的参数文件中检索我的环境变量?
我使用 Symfony Flex 进行了全新的 Symfony 安装,新的骨架属于下一个 Symfony 4 目录结构。
我添加并配置了第一个第三方包:HWIOAuthBundle。此捆绑包用于使用两个秘密信息通过 Twitter 进行连接。
我在文件中声明了 myconsumer_id
和 my 。consumer_secret
config/packages/hwi_oauth.yaml
我的应用程序运行良好。但我不能在 github 上提交我的秘密!
我想要一个hwi_oauth.yaml
像这样的文件:
我阅读了关于新 DotEnv 包的Symfony4 最佳实践。
使用环境变量虽然远非完美,但与我们目前所做的相比有很多好处。环境变量是管理依赖于环境的设置的一种更“标准”的方式(例如,不需要管理 parameters.yml.dist)。
正如最佳实践中所建议的,我将这两行附加到.env
文件中:
但是我遇到了这个错误:
您请求了一个不存在的参数“twitter_consumer_id”。
我尝试了%kernel.twitter_consumer_id%
, %env.twitter_consumer_id%
,%env(TWITTER_CONSUMER_ID)%
但没有成功。
最后一个测试返回此错误消息:
在渲染模板期间引发了异常(“未找到环境变量:“TWITTER_CONSUMER_ID”。”)。
如何在参数文件中检索我的 ENV 变量hwi_oauth.yaml
?
php - 使用 Symfony 4 的每个项目存储库有多个应用程序
我有三个旧应用程序(在 Symfony 2 上运行),每个应用程序都在单独的 git 存储库中开发并在各自的虚拟主机中配置:
company.com
公司网站。admin.company.com
网站管理。api.company.com
API公司服务。
尽管如此,它们共享相同的数据库。所以我们决定(公司)用 Symfony 4 的结构和方法将所有这些统一在一个应用程序中,主要是为了删除大量重复数据并改进其维护。
现在,我正在按计划将所有内容集成到一个应用程序/存储库中,但我开始处理一些性能和结构问题:
- 因为我只有一个入口点,
index.php
所以我做了两个路由前缀以便能够访问子应用程序company.com/admin/
,company.com/api/
所以每次都会加载所有路由:( - 对于每个请求,所有包和配置都是不必要的加载和处理。例如:当我访问 API 路径时,
SonataAdminBundle
它也会被加载:( - 缓存清除命令需要很长时间才能完成。
- 测试正在崩溃,现在也需要很长时间才能完成。
我想保留早期的虚拟主机并仅加载每个域所需的捆绑包和配置:
company.com
仅为公司网站加载捆绑包、路由和配置 (SwiftmailerBundle
, ...)admin.company.com
加载包、路由和配置仅用于网站管理 (SecurityBundle
,SonataAdminBundle
, ...)api.company.com
仅加载捆绑包、路由和配置以提供快速的 API 公司服务 (SecurityBundle
,FOSRestBundle
,NelmioApiDocBundle
, ...)
到目前为止,这就是我正在做的事情:
我已经检查了Kernel::registerBundles()
方法中的当前主机前缀并且我只加载了所需的包,但我仍然有bin/console
文件问题(它不起作用,因为HTTP_HOST
没有为 CLI 定义变量)我想清除每个的缓存“子应用程序”等等。
我一直在对这个主题进行一些研究,但到目前为止我找不到任何对我的场景有帮助的东西(Symfony 4)。
是否可以在一个项目存储库下有许多应用程序独立运行(如单个应用程序)但共享一些配置?实现它的最佳方法是什么?
提前致谢。
symfony - 在 SF3.4 及更高版本中运行 Symfony DIC 烟雾测试
从 DI 容器获取服务是我的测试套件中的冒烟测试不可或缺的一部分。例如,以下测试确保容器中注册的服务的构建没有问题,并且这些服务不会花费太多时间来构建。
然而。Symfony 第 4 版默认将服务私有化。get()
即将发布的 3.4 版将在服务未标记为公共时使用该方法从服务容器中获取服务时触发弃用警告。
这让我想知道是否有一种方法可以在不创建将所有服务作为构造函数参数的公共服务的情况下保持此冒烟测试运行,而容器中有近 1000 个服务当然不是一个可行的选择。
php - Symfony 包中的依赖注入和配置
我需要编写一个将用于基于 Symfony 的多个微服务的包,并且我打算使用即将发布的 Symfony 4。Fabien 说不推荐在 Symfony 4 中使用 bundle。
如何在不使用它们的情况下加载我的包的services.yml
和config.yml
文件?这篇文章描述了如何解决这个问题,但它都是关于使用捆绑包的。或者他的话不适用于需要使用捆绑包才能与 Symfony 连接的可重用包?
symfony - 无法安装探查器 symfony flex
运行后我无法使用 symfony 分析器composer req profiler
我在 4.0 beta 版中使用 symfony/skeleton,但我记得几个月前在 3.3 中测试它时遇到了同样的问题。
工具栏不起作用,请在此处留言:
加载 Web 调试工具栏时出错。打开网络分析器。
当单击“打开网络分析器”时,出现 404 错误。
如果有人解决了,谢谢你的帮助。如果没有,我会在它仍处于测试阶段时报告一个错误。
关于安装:使用 composer 创建了一个项目,4.0-beta 版中的 symfony/skeleton 包链接在这里:https ://github.com/symfony/skeleton
我的 php 版本是 7.1 ;我尝试从上面的命令安装探查器。
symfony - Symfony 4 前端控制器
Symfony 4 放弃了app.php和app_dev.php前端控制器。现在它将只有一个index.php。我们可以在.env文件中操作 dev 和 prod 环境。请告诉我这只是改变环境的一种方法吗?我不能从浏览器中做到这一点(因为它是以前的 app 和 app_dev 文件)?
symfony - AuthenticatorInterface::supports() 方法的目的是什么?
在 Symfony 4 中,该AuthenticatorInterface::supports()
方法有以下注释:
我觉得措辞令人困惑。当我尝试实现这一点时,我的第一直觉是如果请求包含一个username
和password
字段,则返回 true,但后来我记得我收到的所有请求都经过身份验证,即使我没有使用登录表单。
该supports()
方法是一种覆盖security.firewalls.myFirewall.pattern
参数的方法吗?它是处理多个身份验证器之间的流程的东西吗?
我应该如何使用这个界面?