问题标签 [symfony-4.3]
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 - Symfony4.3未捕获错误:路由“xxxx”不存在
我在 symfony 4.3 中遇到 fosJsRouteBundle 的问题我在控制台中有错误Uncaught Error: The route "xxx" does not exist.
路由器控制器
php bin/console fos:js-routing:debug
我在这里搜索解决方案,但我没有找到伟大的 id,我认为问题出在这个https://symfony.com/blog/new-in-symfony-4-1-internationalized-routing
php - 如何在配置特定包中的包中获取配置参数
我已经创建了我的包,所以我想获得一些配置值
我想form_template
参加我的服务或上课
php - 如何使用 Symfony Webpack Encore 让 jQuery 在外部工作?
我正在法国网站 GraphikArt 上关注如何使用 Symfony 创建网站(所以我是新手)的教程。我目前在“Symfony Encore”部分,当我必须在我的 JS 文件中需要 jQuery 而它在我的 Twig 文件上时,我无法让它工作。
我正在使用 Symfony 4.3.3 和 Yarn 1.17.3。正如那个人所展示的那样,我试图让它在我的末尾与那部分一起在外部工作webpack.config.js
:
我还尝试了一些可在此站点上找到的解决方案,但似乎没有任何效果。
我当前的文件:
webpack.config.js
app.js
base.html.twig
JavaScript 部分
如教程所示,我想在文件app.js
中链接时使用 jQuery。base.html.twig
我的问题是,当我保存任何更改时app.js
,我会收到:
本教程(以及在线解决方案)怎么可能适用于其他人但不适用于我?
解决方案
在webpack.config.js
文件中,而不是:
在行之前.autoProvidejQuery()
,写:
此外,问题是我没有使用正确的命令行。使用yarn encore dev
.
symfony - 公共服务作为私人服务处理
我有一个由两个 Symfony 应用程序使用的库,这个库定义了一组我想要公开的服务(我希望能够直接通过容器检索它们。当我尝试访问一个服务时,我有这个:
编译容器时,“Library\Service\DerivedServices\OneSpecificImplementation”服务或别名已被删除或内联。您应该将其公开,或者直接停止使用容器并改用依赖注入。
问题是所述服务被宣布为公开的。
基本上有:
- 一个
Library\Service\BaseService
类,它有两个用于公共依赖项的设置器(此代码段中的教义和一个记录器); - 几个派生类(在
Library\Service\DerivedServices
命名空间中),每个都定义了一个新服务(用自己的构造函数直接处理 DI)。
所以这是我的服务定义:
然后,Symfony 应用程序检索一个派生服务,例如:
这些没有任何区别:
- 我更改了服务定义的顺序
- 两个应用程序都运行 Symfony 4.3.3
我认为这在配置方面是微不足道的,但我无法确定它(在尝试调试为什么框架将我的服务编译为私有的 2 小时后,我认为有人可能有这个并且可能会帮助我)。
forms - Symfony4.3 EntityType 中查询生成器提供的排序首选选项
我有一系列由查询生成器提供的事件。所有实体都必须显示在选择字段中,使用未来事件作为首选。两个部分都应按日期(升序)排序。到目前为止,它通过以下方式运行良好:
由于对 Symfony 4.3 的更新,不再保留首选选项的排序顺序,如下所述: https ://github.com/symfony/symfony/pull/30985 我没有首选选项数组,因为我使用一个可调用来决定将来发生哪个事件。我现在如何对首选选项进行排序?我在不断变化的描述中找不到任何线索。除了在表单构建器之外创建一系列事件之外,真的没有其他方法了吗?
symfony - getUser() 方法在控制器构造函数中不起作用
我想在 Symfony 4.3.2 项目的控制器构造器中获取用户对象。根据https://symfony.com/doc/4.0/security.html#retrieving-the-user-object上的文档,我只需要调用 $this->getUser()。是的,这适用于行动方法。
但是:尝试在构造函数中获取用户不起作用,因为容器不会在此处初始化,并且 getUser 方法会引发异常“调用成员函数 has() on null”:此时容器为 null及时。
这有效:
这不会:
当我手动注入容器时,一切都很好:
顺便说一句,这是 AbstractController 中的 getUser 方法:
这是一个错误,容器未在构造函数中初始化,还是一个特性,当您需要构造函数中的用户时,您必须手动初始化它?
编辑:使用https://symfony.com/blog/new-in-symfony-3-2-user-value-resolver-for-controllers中显示的方式在动作中起作用,但在构造函数中不起作用:
产生以下错误消息:Cannot autowire service "App\Controller\TestController": argument "$user" of method "__construct()" references interface "Symfony\Component\Security\Core\User\UserInterface" but no such service exists. Did you create a class that implements this interface?
。这就是我想设置用户对象的地方。
symfony-4.3 - Symfony 4.3 如果克隆为 git 子模块,如何启用 Bundle
我想在 symfony 包上开发。所以我将它作为 git submodule add 克隆到我的项目中。
但是我必须如何在我的 Symfony 项目中启用这个包,因为它不在供应商中,它直接在我的项目下。
所以我猜在 config/bundle.yaml 中启用它的方法不正确?例如Bundle\Bundle::class => ['all' => true],
因为我在 bin/console 缓存上收到错误:清除
php - 当方法需要参数时,如何在 Symfony 4.3.x 中正确自动连接接口?
我正在尝试构建一个 Symfony 4.3.3 命令,我想在其中添加随时覆盖回调函数的能力。看下面的代码片段:
我想转换这个:
进入这个(如果可能的话,这不是一件疯狂的事情或不可能实现):
我的想法(我可能完全错误)是创建一个允许随时覆盖方法的接口。下面是它的代码片段:
从那里我应该能够在命令中注入接口,例如:
您可能会注意到该函数request()
接收两个参数。出于这样的原因,一旦我从命令中调用该方法,因为$server->on('request', $this->callback->request($request, $response));
它试图访问这两个参数。
我已阅读 Symfony Docs for How to Autowire Interfaces,但我仍然不清楚如何正确设置该方法工作所需的参数。
如果我在这里正确理解文档:
他们已经覆盖了 at 的方法,App\Util\Rot13Transformer
应该没有任何问题。但是,该示例未显示来自被调用transform
接口的方法。TransformerInterface
不确定我的场景中正确的自动装配是否是:
我可以在这里得到一些关于如何实现这一目标的想法吗?以及它是如何工作的一些解释?我可能弄错了:|
注意:如果有什么不清楚或令人困惑,请问我
php - Symfony 4:验证器正在刷新而不是显示消息
我在这里有一个 symfony 添加表单,在“客户端”部分有 2 种可能性(客户端已经存在,并且它是从 db 中选择的,或者它不存在并且您必须完成作为 CollectionFormType 导入的其他字段)。当您创建一个新客户时,他的电话号码必须是唯一的,所以我尝试添加一个自定义约束“checkUnique”来检查重复项和格式。
问题是,当满足来自 newClient 字段(电话)的约束条件时,页面正在刷新获取违规“电话已存在” 而不是显示这样的消息。如何在不刷新的情况下阻止页面提交并显示更改电话号码的消息?
我使用的 CollectionFormType“NewClientType”:
包含 CollectionFormType "NewClientType" 的 FormType:
(我正在使用 Prototype 来呈现此表单)。
php - 生产环境连接数据库出错
启动我的网络应用程序时,我收到 500 错误。prod.log 显示与数据库的连接错误,并且在其下方有一个缓存。警告:无法在 /var/www/project/var/cache 文件夹中保存密钥。(不确定它们是否相关。)
错误说 getaddrinfo failed: Temporary failure in name resolution at /var/www/etc.
我尝试将 db 连接字符串的配置从 localhost 更改为 127.0.0.1 到实际的 IP 地址,但没有发现差异。
.env DATABASE_URL=mysql://username:password@127.0.0.1:3306/atlas
我希望配置能够正确识别本地主机或本地 IP 地址并连接到数据库。