问题标签 [symfony5]
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 5 中处理异常时未定义的 getException 方法
我创建了一个异常类,如下所示:
我在我的services.yaml
文件中添加了以下内容:
但我收到错误:
Attempted to call an undefined method named "getException" of class "Symfony\Component\HttpKernel\Event\ExceptionEvent".
symfony - 如何在 Symfony 5.0 中从 FormEventSubscriber 登录?
我是 Symfony 的新手,我正在尝试构建我的应用程序。但我在文档中找不到如何在事件订阅者中使用记录器作为表单。
我有独白.yml:
我有表单类型:
然后,我有相当虚拟的 FormEventSubscriber:
现在我必须向它添加 LoggerInterface。我正在尝试将此代码插入订阅者:
然后 Symfony 说我必须在 FormType 中添加参数来调用 addEventSubscriber(new FormEventSubscriber())。
那么我该怎么做呢?当我只是在 FormType 中创建 Logger() 类的对象并将其添加为参数时,它什么也不记录
更新。我找到了方法,很明显:) 我也刚刚向 FormType 添加了构造函数,就像在订阅者中一样:
然后打电话
symfony - Symfony 5.0 和 KnpMenuBundle - 如何配置
在 Symfony 5.0 应用程序中,我想使用 KnpMenuBundle。我通过运行安装它
这会自动在 [ProjectRoot]/config/bundles.php 中创建一个条目”:
当然,它也下载了捆绑包。
文档(位于:https : //symfony.com/doc/master/bundles/KnpMenuBundle/index.html )声明配置捆绑包应该编辑文件“app/config/config.yml”。Symfony 5 不再有这个文件了——但是“[ProjectRoot]/config/packages”中每个“包”的单个配置文件。但是没有为 KnpMenuBundle 创建配置文件。我自己怎么能做到这一点 - 意思是:命名约定是什么以及如何告诉捆绑包实际使用配置文件?
还有一个问题。在文档中,它说在树枝模板中渲染菜单的工作方式如下:
对于 Symfony 5 - 那里的正确语法/路径是什么?
symfony - Symfony 5 如何使用 slug 生成 URL?
我有一个带有 slug 的应用程序。所有路由都以相同的 url 开头。URL 看起来像 myapp.com/company_slug/locale/.....
提交登录表单后,我的 GuardAuthenticator 中有一个错误,用于 getLoginUrl()。 缺少一些强制参数(“company_slug”)来为路由“app_login”生成 URL。
我如何在我的应用程序的所有路径中都有一个 company_slug 以及如何修复这个错误?
我想重定向到路由“索引”(/{company_slug}/{_locale}/index)的控制器。
以防万一,我在内核事件上设置了公司属性。
forms - 在 symfony 5 EntityType 中创建自定义选择标签
我创建一个表单并添加 EntityType 字段:
我想显示类别是汽车的名称。
我的数据库表是:
编号 | 姓名 | 类别
php - 使用 2 个实现 UserInterface 的实体进行身份验证
是否有可能有 2 个实体实现UserInterface
?
如何在我的警卫上使用它来使其在两个类中检查并使用相同的防火墙?
这个想法是公司可以拥有CVTheque
或共享它(CVTheque
与 具有 OneToMany 关系Company
)。
我想拥有Candidate
和User
实体。
- CVTheque -> OneToMany -> 候选人
- 用户 -> 多对一 -> 公司。
Candidate
并将User
使用相同的登录表单在应用程序上进行身份验证。所以我不知道这是否可能以及如何在我的警卫身份验证器上实现这一点。
Candidate
根据连接用户的实例(或User
),它们将被重定向到自己的仪表板。
symfony - 将数据从两个类恢复为多对多
我有一个用户表和一个库表,它们之间的关系是多对多的。
所以我有一张user_library
桌子。
我设法将数据从用户添加到库表中,但之后我无法恢复数据。
我这样添加它们:
我认为简单地做:$user->getLibrary()->getIdBook()
就足够了,但事实并非如此。
你认为我怎样才能得到所有id_book
匹配的user
?
php - Doctrine PrePersist/PreUpdate 不会触发
Symfony 的新手(第 5 版),第一次接触 Doctrine。我浏览了有关此的各种其他帖子和文档,但无济于事。
我有一个简单的实体,CRUD 表单都可以正常工作。我想在实体被保存(“上次更新”)时为它们加上时间戳,并想出一种方法来使用 Doctrine 提供的事件。
这是实体:
创建和编辑方法是样板 Maker CRUD:
根据Lifecycle Callback Events 上的文档页面,这应该是我所需要的,除非我没有在某些东西上连接点。各种文章说要么在构造函数中设置这些值,要么在控制器的创建/编辑方法中设置它们。两者似乎都不正确,当这种情况似乎是生命周期回调事件的目的时。
我看到有一个 Doctrine 捆绑包,其中包含听起来可以“解决”这个问题的行为,但我真的很想先自己学习如何去做。
编辑:看起来 PrePersist 有效,但 PreUpdate 从来没有(改变的值永远不会改变)。更改用户密码 (plainPassword) 无效,但更改用户名或角色会触发该方法。为什么更新密码不会触发事件?
symfony - Symfony:导出(CSV)文件有限制吗?
我正在尝试使用 Symfony 5 发送生成的 CSV 文件,但不知何故似乎已经达到了我无法克服的限制。出于测试原因,我将其分解为基础知识;所以我发送静态数据,生成一个 txt 文件并且不做任何逻辑。在下面的示例代码中,如果我进行 65 次迭代,则会生成文件并将其作为下载文件发送到浏览器(即 4KB)。如果我执行 66 或向 $data 示例数据字符串添加一个字母,则它全部显示在浏览器窗口中。即使迭代 1000 次,完全相同的代码在 Symfony 之外也能完美运行。我也没有从 dev.log 中得到任何可以提供帮助的错误或任何内容。
怎么了?为什么我无法在 Symfony 中生成更大的文件?
谢谢你。
[编辑] 我有一个新理论:PHP 的输出缓冲设置为 4KB。只要缓冲区已满,缓冲的数据就会发送到浏览器。不幸的是,这发生在 Symfony 发送标头之前,从而生成浏览器输出。我怎样才能改变这种行为?