问题标签 [symfony-4.4]
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.
php - 如何仅在 symfony 中在生产中显示自定义 500 错误页面?
我通过覆盖默认的 500 页面创建了一个自定义的 500 错误页面。我通过exception.html.twig
在templates/bundles/TwigBundle/Exception/exception.html.twig
. 但问题是,当出现 500 错误时,它会在所有环境中显示此模板。
如何告诉应用程序exception.html.twig
仅在生产中显示模板?在 dev 和 local 中,我想像在普通应用程序中一样向用户显示异常。
symfony - Css 和 js 文件未加载
我刚刚部署了我的 symfony 4 应用程序,但我面临的问题是该应用程序不加载图像、路由、css 文件和 js 文件。我确实安装了资产。这就是我得到的
我的 css 文件
和我的 js
我是不是弄乱了我到处搜索但没有结果的东西。
symfony - 用户注意事项:未找到必需的@OA\PathItem():symfony 4
我正在使用 symfony 4.4 / nelmio api doc bundle 4.0 / zircote swagger-php 3.0。当我尝试第一个示例时,出现此错误:用户注意:未找到必需的@OA\PathItem()
https://github.com/zircote/swagger-php/blob/3.0.0/Examples/example-object/example-object.php https://github.com/zircote/swagger-php/blob/3.0.0 /Examples/using-refs/ProductController.php
symfony - Symfony LTS:如何从 3.4 升级到 4.4?
请告诉我,将 Symfony 从 3.4 升级到 4.4 LTS 需要哪些步骤?
symfony - Symfony 4 - 安全性 - 从多个防火墙相互共享上下文
我想我在 Symfony 安全组件上达到了一些限制。这是我的问题:我有两个防火墙来管理两个用户类型(具有两个不同的实体)身份验证和对网站两个不同部分的访问。我有第三方来管理文件、上传……必须是私有的,并且两种用户类型都需要访问它。
所以我在security.yml中做了多个provider:
和多个防火墙
防火墙:开发:模式:^/(_(profiler|wdt)|css|images|js)/ 安全性:false
因此,Platform 用户无法访问 Core,Core 用户也无法访问 Platform。但是两个用户都需要访问文件管理器,而无需重新登录。我不能将 /file-manager url 放在核心或平台防火墙下,因为另一个不会授予访问权限。所以我需要第三个防火墙来管理文件管理器访问。它使用对核心用户和平台用户进行分组的链提供商。它也不起作用,因为如果核心用户通过核心防火墙进行身份验证,则它没有通过文件管理器的身份验证,因此它重定向到文件管理器登录页面。如果用户登录文件管理器部分,它可以访问它,但是当它返回核心部分时,它必须再次重新连接。
我尝试了几件事,但最接近的解决方案是在防火墙上使用上下文选项,因此当用户通过核心部分登录时,它可以访问文件管理器部分而无需重新登录,因为两个防火墙共享相同的上下文。这就是我想要的。但我也需要它用于平台防火墙!因此,我还为其添加了相同的上下文选项,并且它有效,两种用户类型都可以访问文件管理器而无需再次登录 :D 但是由于三个防火墙共享相同的上下文,核心用户可以访问平台,反之亦然,并且这打破了所有的分离逻辑.. :'(
我需要一种方法来告诉安全组件“文件管理器防火墙与核心防火墙具有相同的上下文,文件管理器防火墙与平台防火墙具有相同的上下文,但核心和平台防火墙不共享相同的上下文”。像这样的东西:
我一无所获。也许它无法完成,也许我必须创建自定义提供程序或身份验证器来破解它。也许我可以在没有 Symfony 的情况下做到这一点,毕竟它只是 php,所以我可以让每个人都可以访问文件管理器部分(所以在主防火墙下)并添加一个侦听器来检查请求是否针对文件管理器,如果有以前登录的用户,则在会话中查找,检查用户是核心用户还是平台用户,如果不是则重定向...?在没有 Symfony 功能的情况下,如何在“主防火墙”页面(= 作为匿名身份验证)上找到会话中以前的 Core 或 Platform 用户?我还不够好,不知道如何实现这一目标。帮助 ?
谢谢
php - 为什么升级到 Symfony 4.4 后我不再看到错误预览页面?
我刚刚将一个项目从 Symfony 4.3 更新到 4.4。更新后,当我出现错误时,显示的页面是带有“糟糕!发生错误!”的生产错误页面,而不是带有所有错误痕迹的开发错误页面。
此外,探查器不会记录错误页面,我可以在探查器中看到所有请求,但看不到有错误的请求。
如果我查看日志(我正在使用 docker),我可以在那里看到 php 错误:
该.env
文件设置为APP_ENV=dev
autowired - 使用带有自动加载和参数的 symfony4 问题的外部存储库
我使用位于 github 中的两个自行开发的库作为私有存储库,因此我可以在多个项目中重用它。我通过作曲家包括它们:
现在 symfony 抱怨找不到类和服务。我的第一个问题是: 为什么它们不像 symfony 使用的库中的其他类一样自动加载,例如 swiftmailer、phpmd、diablomedia/prettyprinter?所有都是库,默认情况下它们不是 symfony 的一部分。
但是这里的其他答案说,我必须在我的 services.yaml 中手动添加服务 Symfony4 使用外部类库作为服务
因此,我将库中的大量服务添加到 services.yaml 文件中:
现在 php bin/console debug:autowiring 给了我以下错误:
好吧,货币是一种模型,而不是一种服务。它由我的库填充值并返回给我的主应用程序。这是构造函数:
如何配置此模型以使用字符串?我在哪里做?我真的必须声明我的库正在使用的每一个类吗?要定义每个类的每个参数?
doctrine - Symfony4 学说单元测试:实体在缓存中有旧数据?
我正在开发一个 Symfony4 应用程序并想测试一个服务是否真的更新了我的数据库。
这里我给出一个数据传输对象
在我的测试类中,我从数据库中获取更新的数据集以检查它是否真的更新了:
我得到了旧数据。如果我手动查看数据库,我看到它实际上已更新并包含新值。
我不知道任何缓存都被主动激活。 我的测试如何获得真正的新值和更新值?
PS:我只是仔细检查了:对于 prod 环境,我有一个用于学说缓存的配置( /config/prod/doctrine.yaml ),但对于开发环境和测试环境都没有。
symfony - Symfony 4.4 的奏鸣曲管理员无法安装树枝/树枝冲突
我运行新项目 Symfony 4.4
symfony new_project --version=4.4
然后
作曲家需要奏鸣曲项目/管理包
并得到错误
这是生成的composer.json
什么版本兼容?我应该更改哪个供应商来安装奏鸣曲管理员?
symfony - Symfony 4:在路由定义中设置 {_locale} 参数会导致“找不到路由”错误
我有一个运行良好的 Symfony 4 应用程序,直到我想用_locale
参数定义一个路由。
我使用以下代码为同一操作定义了两条路线:
当我调用 url 时,/sites/1
我得到了资源,但是如果我调用/en/sites/1
,我得到一个 404 错误“找不到路由”。
这是我尝试过的事情:
- 尝试更改
/{_locale}/sites/{id}
并且/{locale}/sites/{id}
路线正在运行,但显然,语言环境没有改变。 - 试图为
_locale
参数设置要求,但没有更好 - 尝试将
{_locale}
参数设置为前缀(在 annotations.yaml 中)也没有运气 - 我可以在 debug:router 中看到路由定义:
编辑 1:在给定失败请求的分析器中/en/sites/1
:
编辑 2:我使用的是 Symfony 4.4.8,但降级到 4.4.7 似乎可行。我也有 4.4.10 的问题
有其他探索途径的想法吗?
谢谢,
文森特