问题标签 [symfony-components]

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 投票
2 回答
24644 浏览

php - 如何在 symfony2 中创建自定义事件

我想创建调用的自定义事件user_logged,以便我可以将我的侦听器附加到这些事件。

每当用户登录时,我都想执行一些功能。

0 投票
1 回答
691 浏览

php - PHPUnit 模拟对象不起作用

我是在 PHPUnit 中模拟对象的新手,无法让它工作。我正在构建当前的扩展SensioGeneratorBundle(用于 Symfony2)。我使用通过PEAR. 它在PHP 5.3.5上运行(因为 PEAR 安装在该版本中)。

我的剥离课程是:

控制器生成器.php

生成控制器命令.php

生成控制器命令测试.php

当我运行 PHPUnit 时,我不断收到此错误:

为什么我会收到此错误?我想我generate在方法中调用了命令GenerateControllerCommand::execute?我做错了什么,可能是真的吗?或者这是 PHPunit 中的错误?

0 投票
2 回答
2004 浏览

php - Symfony 类加载器组件示例

我试图建立一个简单的例子来了解 Symfony 的 ClassLoader 组件和新的PSR-0标准是如何工作的。

首先我创建了 Bar.php:

然后我创建了一个 autoloader.php(在供应商路径下我有 ClassLoader 组件):

最后我创建了 Foo.php:

但是当我执行时:

我收到以下错误消息:

PHP 警告:在第 4 行的 Foo.php 中,使用非复合名称“Acme”的 use 语句无效

PHP 致命错误:在第 7 行的 Foo.php 中找不到类 'Bar'

我在这里做错了什么?

更新

如果不使用namespace AcmeI use namespace Acme\Barin Bar.php,则会收到与上图相同的错误消息。

0 投票
1 回答
838 浏览

php - 某些选择器语法在 Symfony2 的 CssSelector 组件中不起作用(在 DomCrawler 中)

我有一个关于 dom 爬虫的问题,或者更具体地说,是 CssSelector 组件。当我跑

在一个多维列表上,我得到了所有的直接孩子。但是当我跑步时

我希望得到所有的后代,但我什么也没得到。我究竟做错了什么?

0 投票
1 回答
940 浏览

php - 当与 Symfony Components BinaryFileResponse 类一起使用时,为什么 XSendfile 会发出间歇性的乱码响应?

背景

我的应用程序的部分职责是以受控方式处理对静态资源(CSS、JavaScript、图像)的请求。基于一些应用程序逻辑,它会从选择的不同文件中返回一个,这些文件可能在不同时间在该 URL 上提供给不同的用户。因此,这些是静态文件,但以动态方式交付。

该应用程序基于 Symfony 组件,这些静态文件的服务由BinaryFileResponse类处理。

引导代码调用该trustXSendfileTypeHeader方法:

应用程序使用一些基于配置的内部逻辑以及检测和使用apache_get_modules()来确定可用性。如果XSendfile可用并且配置说要使用它,它会设置X-Sendfile-Type标题:

问题

当我将配置设置为从不使用 XSendfile 或通过 PHP 内置 Web 服务器运行此程序时,显然不支持 XSendfile,一切都很完美。

当我使用 XSendfile 时,它​​也可以工作——大多数时候。

每隔一段时间,通常如果我快速连续按 f5 键 3-4 次,“某事”就会冒出来,我得到一个乱码的响应。例如,这应该是一个 JavaScript 文件(从 Firebug 中“Net”下的“Response”选项卡复制):

hxYîãx��HTTP/1.1 200 OK 日期:2013 年 2 月 5 日星期二 14:49:10 GMT 服务器:Apache/2.2.22 (Ubuntu) X-Powered-By:PHP/5.4.6-1ubuntu1.1 缓存控制:公共上次修改时间:星期二,2013 年 1 月 29 日 13:33:23 GMT 接受范围:字节内容传输编码:二进制 ETag:“10426f-9f6-0”变化:接受编码内容编码:gzip 内容长度: 1011 Keep-Alive: timeout=5, max=98 Connection: Keep-Alive Content-Type: application/javascript

������VmoÛ6þ,ÿkÀ²ãIý°~q [Üt] XÑt¶H¤@Rv¼Àÿ}w(YS ÀØ2yïå¹*¾Á>¯¥¥,è) Æ^Ât¸BaÆ\éjgäjí Î&ð*¸Åí¸tY!³Ç$Óe"jÞ![#,n®®oï®A¨þ¸þù××Þ©¼¼ôÇêÚd¹49mv°ÔrtBÖ^;WÍÓÔg´Y¥´FéôÁR9o°35Îà^º­´N=UÐè­Eµ¢XE¸íÒ%ª°¨Úò7¬KñT¾{;£ÈrTnß³étUè{QÀçÍn·:'üJëQÍÄËZeNjOàyÕÁ:#3wö~4Òét1ù$µeN)RD| ¶FTØJ·ß½¥¨¸õGç >9TyÜxzgl-J:) b«9ûAQ½KX É!yÐÓ] óÆÎ@W¡?¢vún­·7j©ÿ¢ðõÖGEÁy\ºp¤÷cKxf?ï*¼Éç0^ïîÌÇ°ñDQ¸mYJ|4t¾ñæËۯŠ¨6:çøp(}þÑò|LÂ;Õ(#v¹* /[¨U|xª æ]ÍyìjµòÛ¯p?4sI¥"v÷ôp|uQ4ò4&Ï·$eÒc¸ xo%7Ôi´2ñx;TuÙj23 áÊ%ħ¿¹lÌwÀS.&ÏØß7¸}ó ZXzå k2'Zdùè �¦ºû-Ù[Ó²ÿU(¯¤¥=pÃjô¾ç]]Øhhô²× ÙãÚÍ4¨[!Õ}'Òþ^Ð�ûxÿ@+ÚVÞ~áÌáy?d aíD¹·U×ÃÚ] õ5íÃø¨o÷ÂAvUÆmÍaày`¦ä©A?mL[-}®(ÿË d°öò¬}Ç¢ ³Çp1À^6%0 hTô^ts´ÞíWô fO¶ö¢ÎNÜæ·HîUôÔ¶±ÌCµsxh.9åçi Û·_ÈÞØ_ÄãY_Ö}G<ì°ý2wÔ¿aw8/þù\ã±þ"0C oÂh'tE¶À¤¥7I½éßRt. s?á^d|k/Æ)wRw÷cG¿<Þ ¼´°/^ø*ʤAVZ×y¿zÅΪ¥[²Õ1ò_Vµæï_YXÁÕö ��YXÁÕö ��

注意响应正文中标头的存在,其余部分显然不是 JavaScript。开头也有一些虚假字符,这可能是导致标题被推到正文的原因。我试图确定此内容是否是 gzip 压缩的结果,但我还不能确认。(另请参阅下面的更新)

问题

首先,BinaryFileResponse甚至是用于提供文本(非二进制)文件的正确类吗?该类的文档只说“BinaryFileResponse 表示传递文件的 HTTP 响应”。这不是很详细,但它并没有说明它专门用于“二进制”文件。但是这个名字有它自己的含义,为什么 Fabien 不直接调用这个类FileResponse呢?

其次,更重要的是,这可能是什么原因造成的?我不认为这是浏览器问题,因为它在 Firefox 和 Chrome 中都是可重复的。这是 XSendfile 模块或BinaryFileResponse类中的错误吗?(我可能认为它不是前者,因为我之前以更“原始”的方式使用它,而不是通过 Symfony 组件,没有这样的问题)。

有没有其他人经历过这个?知道我应该从哪里开始寻找追踪吗?我已经查看了BinaryResponseFile源代码,但它对 XSendfile 的作用并不大,只是设置了相关的标头并阻止了响应正文中的内容,据我所知。

更新

我刚刚注意到关于这些乱码响应的一些事情:

  1. 根本没有发送实际的标头,即在 Firebug 的“标头”选项卡上,对于乱码响应,它只列出请求标头,甚至不显示响应标头的标题。
  2. 即使我在 PHP 中的 Response 上设置了一些自定义标头,该标头也根本不会出现在乱码响应中(作为标头或响应正文中),但是对于未损坏的响应,自定义标头会正确显示。
0 投票
1 回答
383 浏览

php - 如何在 yaml 资源文件中使用控制器作为服务

我正在使用Silex框架。我写了一个简单的路由资源加载器,就是这样使用的:

源代码在这里:https ://github.com/Mparaiso/silex-extensions/blob/master/src/Mparaiso/Provider/RouteCollectionLoaderProvider.php

我能够加载以常规方式命名的路由,例如,在 yaml 文件中

但我无法加载定义为服务的控制器:

能够在资源文件中将控制器用作服务语法需要什么?

谢谢

0 投票
2 回答
1174 浏览

dependency-injection - Symfony 2 Controller 依赖,扩展 ContainerAware

编辑

在深入研究了 symfony 代码,尤其是 ControllerResolver 之后,似乎我试图做的事情实际上是不可能的,除非我自己继承/实现 ControllerResolverInterface。

这是以下代码,它实例化从路由传递的控制器:

正如你在最后一行看到的,它总是在没有传递参数的情况下被实例化,所以我必须重写这个方法才能以这种方式注入一些东西。感觉很hacky。


原始问题

我试图弄清楚如何使用 Symfony 组件(例如,不是完整的堆栈框架)将服务注入到在动态路由中定义的自定义控制器中。

请注意,我没有使用完整的堆栈框架,也没有使用他们的 DemoBundle src 代码。我有一个composer.json需要组件的文件,所以我有一个index.php与此处详述的文件大致相同的自定义文件:

http://fabien.potencier.org/article/55/create-your-own-framework-on-top-of-the-symfony2-components-part-12

我有以下内容:

然后我有以下内容App/MyBundle/DependencyInjection/MyExtension.php

App/MyBundle/Resources/config/services.xml

我基本上是在尝试将模板服务注入MyController构造函数,我的理解是MyExtension文件应该自动加载。我假设我没有使用完整的堆栈框架,这就是原因,但我怎样才能让它工作呢?

0 投票
1 回答
14133 浏览

php - 为简单的应用程序生成 PHAR

我正在尝试使用 Symfony2 控制台库构建 CLI 工具。我有一些基本的工作,现在我想把它打包成一个 phar。我已经阅读了一些示例,但我看到的示例非常简单(3 个文件,没有命名空间等)。

在我的src/目录中,我有以下内容:

在此处输入图像描述

上面src/我有一个console.php我执行来运行应用程序。我也有一个vendors/目录,因为我正在使用 composer 安装依赖项。console.php很简单:

根据我对构建 phar 的了解(很少),我认为我需要将其console.php作为存根和其他所有内容src/以及我在vendors/.

查看phpmaster.com上的示例代码,他们使用 手动指定要包含在 phar 中的每个文件file_get_contents,但我需要维护我的目录结构以使用作曲家的自动加载器并保持 PSR-0 目录结构。

有没有一种简单的方法来创建 .phar 并在其中维护我的目录结构,以便我仍然可以使用 composer 的自动加载器?

0 投票
8 回答
5383 浏览

php - Laravel 4 队列:监听超时

我跑了php artisan queue:listen大约 27 分钟后,它停止处理更多的工作。在我的错误日志中,我看到了错误:

在此处输入图像描述

这是一个错误吗?我不认为听众应该超时!


更新

侦听器的第二次运行在 3 小时后超时。我正在使用 php-fgm 在 nginx 上运行 Laravel 4。

0 投票
1 回答
993 浏览

symfony - Validator 组件中的翻译

我目前正在将 Symfony 验证器组件集成到自定义 PHP 应用程序中。到目前为止,一切都很好,我可以验证我的用户输入。

现在我想将验证消息翻译到另一个语言环境并集成了翻译组件(由于 DefaultTranslator 中的 TranslatorInterface 的依赖,它无论如何都是必需的)。

默认 Translator 仅支持硬编码到 ValidationConstraints 中的语言环境。据我所知,我需要指定一个自定义 Translator 实例,该实例从 Validator 组件中的 xliff 文件加载字符串。

这是我走了多远,但遗憾的是德语翻译不会加载:

有什么建议我可能会在这里遗漏吗?