问题标签 [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.
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_items
var 填充了正确的内容,并将其保存到 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 上显示了错误的项目。
我在这里做错了什么?我知道缓存很棘手,但我肯定在这里遗漏了一些东西
php - 嵌入形式的持久性
我有 2 个实体Enchere
和Produit
2 个各自Form
的 .
在我的 Enchere 表格中,有:
idProduit
是与 中的 ManyToOne 的Enchere
关系Produit
:
在我的控制器中,我想用两种形式冲洗 2 个水合的物体......我该怎么做?
在添加我的嵌入式表单之前,我的控制器是:
php - 将 Symfony 3.0 升级到 3.2 -> 在 null 上调用成员函数 getRepository()
我刚刚将我的 Symfony 应用程序从 3.0 升级到了 3.2。
为此,我简单地创建了一个新的 Symfony 3.2 项目,并将我所有的工作从旧项目复制并粘贴到新项目中。这意味着,一些文件夹,如控制器、服务、路由等......
一切似乎都运行良好,除非我调用一个使用教义的页面。它总是向我返回以下异常:“错误:在 null 上调用成员函数 getRepository()”
这是我如何称呼我的回购:
3.2 中的语法有什么变化吗?我在互联网上找不到任何关于此的内容。
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 在我的笔记本电脑环境和虚拟机内部不会返回相同的值......知道为什么吗?
php - 实体实例的多种形式 - symfony3
我正在尝试创建一个表单,允许经理批准休假请求列表(还计划有一个待办事项列表并希望能够将它们标记为已完成)。
我已多次阅读 [在同一页面上生成相同的表单类型多次 Symfony2(以及其他几个),我已经接近理解,但我对 Symfony 相当陌生,不清楚代码的哪些部分应该放在哪些文件中. 我在 Symfony3 with Doctrine 中使用表单类型和控制器。
我有从控制器中的查询($em->createQuery)返回的实体实例列表,我希望为每个实体实例生成一个表单,甚至为每个实体生成两个表单(一个用于批准,一个用于拒绝) .
引用的问题说您需要一个循环来显示和保存它们。我的意图是一次只处理(提交)一个。我假设这部分代码将进入控制器?
我正在为控制器使用 indexAction,但使用它更像是一个 Edit 操作,因为我将处理表单,所以我传入一个 Request 对象和对象作为参数。
>
我现在可以使用表单但是当我提交它们时 isSubmitted() 似乎没有工作。它当前输出“未检测到表单提交”。
因此,当我有多个表单并提交一个时,handleRequest 是否得到正确的一个?我想我也可能在这里混淆了两个概念。我最近更改了代码以将 timeOffRequest 的 ID 作为参数提交给路由。它正确地选择了它,这使我可以更新表单,但那部分代码似乎不起作用。
我注意到,如果我查看调试器,我会得到如下信息:
如果我单击拒绝按钮。如果我单击批准按钮,我会得到一个带有“批准”的类似表格,所以看起来我很接近。此外,正确的 ID 会从操作中给出的路线中显示出来。
这是表单生成器:
有什么线索吗?(对不起,我正在度假,所以更新不是特别快。
doctrine-orm - Symfony 3 和 Doctrine 的关系
我有两个实体 A 和 B。假设实体 A 有一个主键“foo”,而实体 B 有一个名为“bar”的变量。我正在尝试在这两者之间建立“多对一”关联。当我在终端上运行“更新架构”命令时,它给了我这个结果:
“无需更新 - 您的数据库已经与当前实体元数据同步。”
这是代码:
和
doctrine-orm - Symfony形式,一对一关系,一侧可以为空
我有一个MainConfig
与实体具有一对一关系的LedConfig
实体。LedConfig
可以为空。
我在不使用 Symfony 表单的情况下自动将主配置插入数据库。因此,如果我在代码中将 led config 设置为 null -led_config_id
主配置表中的字段正确设置为 NULL。
但是,当我更新主配置时,我使用的是通过 Symfony 表单处理的 HTTP PUT 请求。我正在使用 JSON,所以请求正文如下所示:
处理完表单后,$ledConfig
MainConfig 实体中的属性被神奇地实例化为所有属性都设置为 NULLLedConfig
的对象?!并且数据库更新失败,因为它试图用空字段保存 LedEnttiy。为什么会这样?
有人可以帮助我并指出我做错了什么吗?
编辑:在表单验证之后,我可以在控制器更新操作中破解它:
但这有点脏……
php - (Symfony3) 如何将自定义属性添加到 FOSUserBundle 并持久化?
我正在尝试将自定义属性(psptCode)添加到我的用户实体,扩展 UserBundle。这是我的用户类:
当我创建数据库模式时,我的自定义属性被创建,但是当我尝试将一个值存储到我的自定义属性中时,它不会持久化到数据库中:
用户存储如下:
因此,我无法存储用户的自定义属性。请帮忙!
php - 如何使用 FOSOAuthServerBundle 在 Symfony 3 中获取 AuthorizationCode GrantType
我正在尝试为基于 FOSOAuth 的具有 OAuth2 支持的 Symfony3 REST 应用程序构建引导程序。我目前的实施基于以下来源:
- git:maxpou docker-symfony用于 Docker 设置
- symfony.com - CustomUserProvider为自己的 Userprovider
- 导致您卡住 - oauth2 解释了 OAuth 配置
- bitgandtter.blog - Symfony 中用于 OAuth的宁静应用程序
并且可以在这里找到自述文件中描述的所有设置步骤。
客户端凭据登录现在正在工作,但是我遇到了 AuthorizationCode 流问题,它没有重定向到导致您卡住 - AuthorizationCodeclient.local
中描述的那样,而是再次重定向到-Route。我认为 FOSOAuth 正在捕获请求并将其重定向到auth_login
client.local
因为涉及到这么多组件,所以我放弃发布代码片段并请参考git 存储库
提前感谢您提供的任何帮助!
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
存储库方法
抱歉,这篇文章太长了,我试图尽可能清楚地记录下来。非常感谢您的帮助 !