问题标签 [symfony-3.2]

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 投票
1 回答
374 浏览

php - 访问在 Symfony 之外创建的缓存项使它们有时只能工作,为什么?

我正在集成一个遗留的 Zend Framework 1 (ZF1) 应用程序和一个 Symfony 3.2.6 (SF) 应用程序。简而言之,它的工作原理是:

  • 会话管理、登录页面(唯一入口点)和很多东西都由 ZF1 应用程序和 ZF1 本身管理
  • 没有从 SF 端调用任何 Zend 控制器、模板、助手或任何其他

例如: - http://localhost/login=> 将由 ZF1 管理 - http://localhost/sf/quote=> 将由 SF 管理(关键是/sf/URL 中的)

这意味着我在 Apache VH 中有一条规则说:每个带有/sf/*URL 的请求都将app.php|app_dev.php其发送到 Symfony,否则它将绕过此规则并直接转到 ZF1。

我要做的第一件事是使用旧版 ZF1 应用程序登录应用程序。成功登录后,我重定向到仪表板,使用以下代码NavigationController.php从布局中调用a :main.phtml$this->action('buildallmenu', 'navigation');

在这样的代码中,菜单是从数据库生成的,然后使用下面的代码我试图缓存它,因为我不需要而且我不想再次从 ZF1 或 SF 访问数据库。

为什么session_id()因为每个用户的菜单是“唯一的”session_id() ,所以将其附加到 Redis 缓存项是有意义的。

从那里我看到$cached_itemsvar 填充了正确的内容,并将其保存到 Redis。

现在我访问 Symfony 控制器的方式就是我之前解释的方式:“通过访问 URL”。假设我将 URL 称为:http://localhost/sf/quote这将执行规则并重定向到app_dev.php这意味着我现在在 Symfony 上。

我做的第一件事是检查session_id()(打印session_id()值)并与 ZF1 创建的值进行比较,它们匹配。

SF 基本模板将控制器称为:{{ render(controller('CommonBundle:Setup:GenerateMenuItems')) }}. 这是从模板调用的函数的内容:

mmi_pool是一个服务,定义如下:

缓存是如何配置的config.yml

更新

我发现当我第一次登录时,这段代码没有被执行:

我不确定为什么。这导致缓存存储了错误的项目,因此在 SF 上显示了错误的项目。

我在这里做错了什么?我知道缓存很棘手,但我肯定在这里遗漏了一些东西

0 投票
0 回答
52 浏览

php - 嵌入形式的持久性

我有 2 个实体EnchereProduit2 个各自Form的 .

在我的 Enchere 表格中,有:

idProduit是与 中的 ManyToOne 的Enchere关系Produit

在我的控制器中,我想用两种形式冲洗 2 个水合的物体......我该怎么做?

在添加我的嵌入式表单之前,我的控制器是:

0 投票
0 回答
1455 浏览

php - 将 Symfony 3.0 升级到 3.2 -> 在 null 上调用成员函数 getRepository()

我刚刚将我的 Symfony 应用程序从 3.0 升级到了 3.2。

为此,我简单地创建了一个新的 Symfony 3.2 项目,并将我所有的工作从旧项目复制并粘贴到新项目中。这意味着,一些文件夹,如控制器、服务、路由等......

一切似乎都运行良好,除非我调用一个使用教义的页面。它总是向我返回以下异常:“错误:在 null 上调用成员函数 getRepository()”

这是我如何称呼我的回购:

3.2 中的语法有什么变化吗?我在互联网上找不到任何关于此的内容。

0 投票
9 回答
4291 浏览

symfony - 注意:未定义的属性:DOMDocument::$documentElement

我最近重新打开了一个旧的(1 年)Symfony 项目,我在每个页面上都有一个错误(我不记得一年前有这个问题):

如果我清除缓存,错误就会消失,但一旦我编辑并保存文件,错误就会再次出现。该项目使用的是 Symfony 2.8,我更新到 Symfony 3.2,但它并没有解决问题。

我认为问题与 wdt.xml 文件无关,我认为它可能与我的笔记本电脑配置有关。

我真的不知道从哪里开始调查,所以欢迎任何建议!

编辑 1
我实际上在几天前创建的另一个项目中遇到了同样的问题。该项目不使用任何额外的包,我只创建了 5 个实体并生成了 MySQL 数据库。

编辑 2
经过更多研究,我决定创建一个新的 Ubuntu VM 并测试一个新的 Symfony 项目,它运行良好,所以它一定与我笔记本电脑上的配置有关。

编辑 3
经过更多测试,这是我添加 print_r($dom); 时得到的结果。在文件 XmlUtils.php (vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php) 第 59 行:

Ubuntu VM(无错误):

Ubuntu笔记本电脑(错误):

我的笔记本电脑上似乎缺少一些信息...

所以基本上,函数 $dom->loadXML 在我的笔记本电脑环境和虚拟机内部不会返回相同的值......知道为什么吗?

0 投票
2 回答
563 浏览

php - 实体实例的多种形式 - symfony3

我正在尝试创建一个表单,允许经理批准休假请求列表(还计划有一个待办事项列表并希望能够将它们标记为已完成)。

我已多次阅读 [在同一页面上生成相同的表单类型多次 Symfony2(以及其他几个),我已经接近理解,但我对 Symfony 相当陌生,不清楚代码的哪些部分应该放在哪些文件中. 我在 Symfony3 with Doctrine 中使用表单类型和控制器。

我有从控制器中的查询($em->createQuery)返回的实体实例列表,我希望为每个实体实例生成一个表单,甚至为每个实体生成两个表单(一个用于批准,一个用于拒绝) .

引用的问题说您需要一个循环来显示和保存它们。我的意图是一次只处理(提交)一个。我假设这部分代码将进入控制器?

我正在为控制器使用 indexAction,但使用它更像是一个 Edit 操作,因为我将处理表单,所以我传入一个 Request 对象和对象作为参数。

>

我现在可以使用表单但是当我提交它们时 isSubmitted() 似乎没有工作。它当前输出“未检测到表单提交”。

因此,当我有多个表单并提交一个时,handleRequest 是否得到正确的一个?我想我也可能在这里混淆了两个概念。我最近更改了代码以将 timeOffRequest 的 ID 作为参数提交给路由。它正确地选择了它,这使我可以更新表单,但那部分代码似乎不起作用。

我注意到,如果我查看调试器,我会得到如下信息:

如果我单击拒绝按钮。如果我单击批准按钮,我会得到一个带有“批准”的类似表格,所以看起来我很接近。此外,正确的 ID 会从操作中给出的路线中显示出来。

这是表单生成器:

有什么线索吗?(对不起,我正在度假,所以更新不是特别快。

0 投票
1 回答
67 浏览

doctrine-orm - Symfony 3 和 Doctrine 的关系

我有两个实体 A 和 B。假设实体 A 有一个主键“foo”,而实体 B 有一个名为“bar”的变量。我正在尝试在这两者之间建立“多对一”关联。当我在终端上运行“更新架构”命令时,它给了我这个结果:

“无需更新 - 您的数据库已经与当前实体元数据同步。”

这是代码:

0 投票
1 回答
1604 浏览

doctrine-orm - Symfony形式,一对一关系,一侧可以为空

我有一个MainConfig与实体具有一对一关系的LedConfig实体。LedConfig可以为空。

我在不使用 Symfony 表单的情况下自动将主配置插入数据库。因此,如果我在代码中将 led config 设置为 null -led_config_id主配置表中的字段正确设置为 NULL。

但是,当我更新主配置时,我使用的是通过 Symfony 表单处理的 HTTP PUT 请求。我正在使用 JSON,所以请求正文如下所示:

处理完表单后,$ledConfigMainConfig 实体中的属性被神奇地实例化为所有属性都设置为 NULLLedConfig的对象?!并且数据库更新失败,因为它试图用空字段保存 LedEnttiy。为什么会这样?

有人可以帮助我并指出我做错了什么吗?

编辑:在表单验证之后,我可以在控制器更新操作中破解它:

但这有点脏……

0 投票
0 回答
162 浏览

php - (Symfony3) 如何将自定义属性添加到 FOSUserBundle 并持久化?

我正在尝试将自定义属性(psptCode)添加到我的用户实体,扩展 UserBundle。这是我的用户类:

当我创建数据库模式时,我的自定义属性被创建,但是当我尝试将一个值存储到我的自定义属性中时,它不会持久化到数据库中:

用户存储如下:

因此,我无法存储用户的自定义属性。请帮忙!

0 投票
1 回答
80 浏览

php - 如何使用 FOSOAuthServerBundle 在 Symfony 3 中获取 AuthorizationCode GrantType

我正在尝试为基于 FOSOAuth 的具有 OAuth2 支持的 Symfony3 REST 应用程序构建引导程序。我目前的实施基于以下来源:

  1. git:maxpou docker-symfony用于 Docker 设置
  2. symfony.com - CustomUserProvider为自己的 Userprovider
  3. 导致您卡住 - oauth2 解释了 OAuth 配置
  4. bitgandtter.blog - Symfony 中用于 OAuth的宁静应用程序

并且可以在这里找到自述文件中描述的所有设置步骤。

客户端凭据登录现在正在工作,但是我遇到了 AuthorizationCode 流问题,它没有重定向到导致您卡住 - AuthorizationCodeclient.local中描述的那样,而是再次重定向到-Route。我认为 FOSOAuth 正在捕获请求并将其重定向到auth_loginclient.local

因为涉及到这么多组件,所以我放弃发布代码片段并请参考git 存储库

提前感谢您提供的任何帮助!

0 投票
3 回答
5740 浏览

symfony - Symfony / Doctrine 错误:“未定义类 'FROM'。” 在 getResult() 上

我正在开发我的第一个 symfony 应用程序,在尝试使用 queryBuilder 时,我已经为一个问题苦苦挣扎了几个小时。

我正在尝试执行 SQL 查询,但出现以下错误:

request.CRITICAL:未捕获的 PHP 异常 Doctrine\ORM\Query\QueryException:“[语义错误] 第 0 行,'FROM StatsBundle\Entity\PlayerRealMatch' 附近的 col 288:错误:未定义类 'FROM'。”

基本上我正在存储足球运动员的评分和目标,现在我想检索它的聚合,包括总和和平均值。

我在一个服务里面,我在我的 PlayerRealMatchRepository 里面调用一个方法,这个方法的核心代码如下:

如果我使用调试器查看 $query 对象的 _dql 属性,这就是我所拥有的:

对我来说看起来并没有那么糟糕,你们知道这里出了什么问题吗?

注意:这是我试图实现的查询示例,它直接在我的数据库上完美运行:

详情如下

3个实体:

  • 播放器
  • RealMatch:关于比赛的一般数据
  • PlayerRealMatch : 球员在比赛中的表现

下面是它们各自配置的摘录,以显示它们是如何链接的。




从服务调用存储库方法

这是关于我的服务的 services.yml

存储库方法

抱歉,这篇文章太长了,我试图尽可能清楚地记录下来。非常感谢您的帮助 !