问题标签 [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.

0 投票
0 回答
942 浏览

php - 如何仅在 symfony 中在生产中显示自定义 500 错误页面?

我通过覆盖默认的 500 页面创建了一个自定义的 500 错误页面。我通过exception.html.twigtemplates/bundles/TwigBundle/Exception/exception.html.twig. 但问题是,当出现 500 错误时,它会在所有环境中显示此模板。

如何告诉应用程序exception.html.twig仅在生产中显示模板?在 dev 和 local 中,我想像在普通应用程序中一样向用户显示异常。

0 投票
1 回答
192 浏览

symfony - Css 和 js 文件未加载

我刚刚部署了我的 symfony 4 应用程序,但我面临的问题是该应用程序不加载图像、路由、css 文件和 js 文件。我确实安装了资产。这就是我得到的

我的 css 文件

和我的 js

我是不是弄乱了我到处搜索但没有结果的东西。

0 投票
0 回答
1826 浏览

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

0 投票
1 回答
886 浏览

symfony - Symfony LTS:如何从 3.4 升级到 4.4?

请告诉我,将 Symfony 从 3.4 升级到 4.4 LTS 需要哪些步骤?

0 投票
1 回答
520 浏览

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 用户?我还不够好,不知道如何实现这一目标。帮助 ?

谢谢

0 投票
3 回答
658 浏览

php - 为什么升级到 Symfony 4.4 后我不再看到错误预览页面?

我刚刚将一个项目从 Symfony 4.3 更新到 4.4。更新后,当我出现错误时,显示的页面是带有“糟糕!发生错误!”的生产错误页面,而不是带有所有错误痕迹的开发错误页面。

此外,探查器不会记录错误页面,我可以在探查器中看到所有请求,但看不到有错误的请求。

如果我查看日志(我正在使用 docker),我可以在那里看到 php 错误:

.env文件设置为APP_ENV=dev

0 投票
1 回答
155 浏览

autowired - 使用带有自动加载和参数的 symfony4 问题的外部存储库

我使用位于 github 中的两个自行开发的库作为私有存储库,因此我可以在多个项目中重用它。我通过作曲家包括它们:

现在 symfony 抱怨找不到类和服务。我的第一个问题是: 为什么它们不像 symfony 使用的库中的其他类一样自动加载,例如 swiftmailer、phpmd、diablomedia/prettyprinter?所有都是库,默认情况下它们不是 symfony 的一部分。

但是这里的其他答案说,我必须在我的 services.yaml 中手动添加服务 Symfony4 使用外部类库作为服务

因此,我将库中的大量服务添加到 services.yaml 文件中:

现在 php bin/console debug:autowiring 给了我以下错误:

好吧,货币是一种模型,而不是一种服务。它由我的库填充值并返回给我的主应用程序。这是构造函数:

如何配置此模型以使用字符串?我在哪里做?我真的必须声明我的库正在使用的每一个类吗?要定义每个类的每个参数?

0 投票
1 回答
237 浏览

doctrine - Symfony4 学说单元测试:实体在缓存中有旧数据?

我正在开发一个 Symfony4 应用程序并想测试一个服务是否真的更新了我的数据库。

这里我给出一个数据传输对象

在我的测试类中,我从数据库中获取更新的数据集以检查它是否真的更新了:

我得到了旧数据。如果我手动查看数据库,我看到它实际上已更新并包含新值。

我不知道任何缓存都被主动激活。 我的测试如何获得真正的新值和更新值

PS:我只是仔细检查了:对于 prod 环境,我有一个用于学说缓存的配置( /config/prod/doctrine.yaml ),但对于开发环境和测试环境都没有。

0 投票
1 回答
500 浏览

symfony - Symfony 4.4 的奏鸣曲管理员无法安装树枝/树枝冲突

我运行新项目 Symfony 4.4

symfony new_project --version=4.4

然后

作曲家需要奏鸣曲项目/管理包

并得到错误

这是生成的composer.json

什么版本兼容?我应该更改哪个供应商来安装奏鸣曲管理员?

0 投票
0 回答
134 浏览

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

  • 配置部分向我展示了国际语言环境是 fr。
  • 在路由部分,我在 debug:router 命令中看不到相同的:更改为(即使我将 _locale 的要求设置为)profilter中的路由部分 {_locale}0fr|en

编辑 2:我使用的是 Symfony 4.4.8,但降级到 4.4.7 似乎可行。我也有 4.4.10 的问题

有其他探索途径的想法吗?

谢谢,

文森特