问题标签 [symfony-2.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.
symfony - 树枝和子控制器之间有东西在吃我的东西
好的,首先是免责声明。我正在处理我的第一个 Sf2 项目并处理现有的 sf1 项目,将其重构为 Sf2 以了解所有抽屉已移至何处。
现在,发生了一些奇怪的事情,它让我扯掉了最后一根头发。
--- TL;DR:总结 ---
我正在从树枝模板渲染控制器并将数组传递给该子控制器。数组值之一是一个对象,但该对象在到达控制器之前就消失了。
我已经尽我所能通过 Symfony2 流程追踪它,并且我可以追踪到该对象是完整的。然后我迷路了,但是在 Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer::render() 和我的(子)控制器之间的某个地方,对象消失了。
这是一个功能,一个错误还是只是我发疯了?
- - 详细地 - -
我有一个 twig 模板,它处理一个实体对象(分配给 twig 变量“collection”),其中包含链接的实体,例如 imageItem 和 linkedPageItem)。
我的实体已设置为扩展实现 ArrayAccess 的基类,因此无论对象是否水合,我都可以使用数组表示法访问值。(遵循此处概述的选项#1 方法:http: //docs.doctrine-project.org/en/latest/cookbook/implementing-arrayaccess-for-domain-objects.html)。
在树枝中,我有一条这样的线,它将一些对象传递给子控制器以渲染图像块。renderImage 子控制器在渲染自己的树枝块之前管理所有内容的清理。
这是主树枝文件中的代码:
但是,renderImage 子控制器永远不会收到 $options['link_page'] 的值。
这很奇怪,所以我更详细地研究了它。我找到了 twig 将 blockLinks.html.twig 渲染到的 PHP 文件,并对其进行了深入研究。
在那里我们发现:
好的,看起来不错。
为了弄清楚我做了什么\Doctrine\Common\Util\Debug::dump($this->getAttribute($_collection_, "linkedPageItem", array(), "array"));
,它报告说这确实返回了一个 Page 对象。
即它报告类似:
从缓存中编译的 twig php 文件开始
-> Symfony\Bridge\Twig\Extension\HttpKernelExtension::renderFragment()
-> Symfony\Component\HttpKernel\Fragment\FragmentHandler::render()
-> Symfony\Component\HttpKernel\Fragment \InlineFragmentRenderer::render()
此时对象仍然完好无损(通过在调用 $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false) 之前转储 $subRequest->attributes->get('options') 可以看到);在 InlineFragmentRenderer 的第 62 行)
我不确定接下来会去哪里。我以为它去了 [\vendor\symfony\symfony\src]Symfony\Bundle\FrameworkBundle\HttpKernel 但我似乎无法跟踪那里的任何活动。
但是,如果我查看 renderImage 控制器并转储如下选项:
我明白了:
换句话说,'link_page' 对象已经从选项中删除了——一些饥饿的东西(而且非常可怕)似乎潜伏在 Symfony 的深处并吃掉我的对象!
这是一个功能吗?(你不能将数组中的对象传递给子请求......也许这激怒了超级严格的 MVC 神?)
或者它是一个错误?(有些东西正在吃它不应该吃的东西?)
或者我只是把这根棍子弄错了?
我希望有人能帮忙,在我失去最后一根头发之前......
C
symfony - 验证非模型属性
环境:Symfony2.2 + Propel 1.6
我尝试验证链接到模型(客户)的“客户”表单以管理“创建帐户”(表格 1)和“登录帐户”(表格 2)。用户需要选中“我接受协议条款”复选框,并且此字段未链接到模型。我正在使用全局“validation.yml”文件来管理验证规则。
我不知道如何使用validation.yml 文件检查复选框。
我尝试了几种技术:
1/ 在validation.yml中加入规则,在模型中添加getter/setter:
验证.yml:
我的项目\模型\客户:
结果:即使未选中复选框,规则“True”也是可以的。如果我添加“NotBlank”规则,则在选中/取消选中的情况下验证都会失败。
2/ 尝试在“CustomerType”对象中添加特定的验证规则(如本文所述)
结果:如果存在“validation.yml”文件,则不考虑这些规则,如果我删除文件中的“客户”条目,它可能会起作用,但我希望尽可能保留它。
3/由于我找不到“yml”解决方案,我终于在控制器内添加了一个“手动”验证,如下所示:
知道如何在validation.yml 文件中添加我的“接受条款”复选框规则吗?
symfony - SonataAdminBundle :显示非粗略(统计)
我正在使用奏鸣曲管理包来生成我的后端,我对此非常满意,我也想使用我的后端来显示统计数据。
我想我可以通过调整包的视图来做到这一点,也许是“standard_layout.html.twig”。
问题是,我找不到例子,甚至找不到人谈论它,所以我想知道,这可能吗?人们谈论它不是因为它太简单了吗?你做了吗 ?
我真的很想有一个后端,所以请赐教!
谢谢你,cpndz
symfony - 引用在 Symfony2.2 中更改的包/控制器/文件?
我理解这一点:http ://symfony.com/doc/2.1/reference/configuration/twig.html (2.1 版)以及如何为 exception_controller 引用包:
但我不明白如何为 2.2 版(我正在使用)(http://symfony.com/doc/current/reference/configuration/twig.html)
我的捆绑包位于:
...如何在 2.2 中引用它?
symfony - 我使用哪个 Symfony2 版本?2.2 还是 2.3?
我刚开始使用 Symfony2 并希望创建中型站点。过去两个月我一直在学习它。
我目前安装了 2.2。
问题是:我现在应该使用 2.2 创建站点还是放弃它并使用 2.3,即使它还没有完全发布。
我希望这个站点可以使用很多年,所以我认为 2.3 LTS 版本更好,但当然它还没有完全发布。
我并不担心次要版本中的奇怪额外功能,但事实是 2.3 是一个长期版本(3 年)或我感兴趣的东西。现在在 2.2 中编写一个网站似乎很疯狂? 显然 2.2 支持 8 个月?
static - 在 symfony 2.2 twig 中访问静态变量
我有一个包含数组形式的常量选项的类:
如何在 symfony 2.2 twig 中访问 $UNVERSITY_STANDING 或 $GENDER?
symfony - Symfony 2.2 app.php 重定向到 localhost root
我正在 Mac OSX Mountain Lion 上开发 Symfony2 项目。我用最新的 2.2.1 版本开始了一个新项目。在开发环境中一切正常,但是当我想用它测试产品环境时,app.php
它会自动将我重定向到http://localhost
并显示默认页面“它可以工作!”。
我的其他项目仍处于 2.1 版,即使在 prod 环境中也能正常工作。我没有对这个项目做任何不同的事情,我不知道如何让它工作。
我所有的项目都在我~/Sites
目录中的单独文件夹中。
symfony - 产品中的 Symfony 2.2 白色/空白屏幕(另一个)
我更新了我的服务器上的一些文件,删除了缓存目录并且必须认识到,我收到一个白页,刷新后我能够登录,然后得到一个空白屏幕。我尝试了这个本地主机并得到了相同的结果。app_dev 运行良好。谷歌搜索我在 app.php 中发现了这个变化
这有帮助,因为我再次删除了缓存。加热缓存也无济于事:
我在 Symfony 2.0 下开发了这个应用程序,并在开发时对其进行了更新。这是我第一次遇到这个问题。我只能为这个问题找到较旧的线程,所以在我看来,我可能在迁移时出错了。
有什么提示吗?
编辑:1.日志只是说(昨天):
pushHandler.INFO:获取:[] []
但我记得,它并不是每次都记录下来。顺便说一句:我没有安装加速器。
php - 参数 - 此服务的最佳实践
在阅读了很多关于 Symfony2 DIC 和语义配置的信息后,我问自己:“那么,现在我要如何才能达到我想要达到的目标!?”
设想
想象一下,您想创建一个非常像“管理仪表板调度程序”的服务。
这意味着我有一些我想做 CRUD 的实体。我不想做的是我项目中每个实体的路由->动作->逻辑的组合;那是因为,以这种方式,我必须为每个对象编写如下内容:
- /添加/实体
- addEntityAction
- 实体逻辑
其中“实体”当然是对象中实体的名称。
我正在构建一个服务(如调度程序),它将响应操作(添加-删除-编辑)但它是参数化的:我将在地址栏上写入类似/add/entityA
或/add/entityB
的内容,并且路由将引导我执行相同的操作(当然)我是否记得我的服务与实体名称。
在这一点上,我的服务应该很聪明地知道什么是 EntityClass、FormTypeClass 和对象中实体的模板文件。
我的精神混乱来了
我必须做一些初步配置,比如下面的 php 数组(这只是一个例子)
或等效的东西。
但 ....
对于这种情况,考虑到只有我和我的团队会使用这个捆绑包(所以不是第三方捆绑包),最佳实践是什么?
第一个解决方案
parameters.php
如果我定义了一些常量或静态成员,请使用文件
第二种解决方案
直接在我的服务中使用地图(如以前的数组)
第三个解决方案
为我的包使用语义配置,定义扩展类等等
如果我不得不说实话,我不能说什么更好。显然第一个和第三个比第二个更好。
第一个解决方案打破了 symfony2 的理念,但似乎是唯一的方法,因为第二个解决方案似乎只有在我必须触发创建一些直接由我的 DIC 处理的服务(以级联方式)或具有配置层次结构时才有用,或者用于合并多个配置文件,或者(对于第三方捆绑包可能最重要)对配置进行某种验证。文件
你怎么看?您是否看到其他一些方法可以做到这一点,或者您只是更喜欢第三种解决方案?我想知道你的意见。
编辑:显然我可以使用构建器注入或设置器注入,但我认为它进入“DIC”部分(所以,第三个解决方案)