問題タブ [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用)。を介してインストールされたPHPUnit3.7を使用しPEARます。PHP 5.3.5で実行されています(PEARはそのバージョンにインストールされているため)。

私の剥奪されたクラスは次のとおりです。

ControllerGenerator.php

GenerateControllerCommand.php

GenerateControllerCommandTest.php

PHPUnitを実行すると、次のエラーが発生し続けます。

なぜこのエラーが発生するのですか?メソッドでgenerateコマンドを呼び出したと思いますか?GenerateControllerCommand::execute私は何か間違ったことをしていますか、本当の可能性がありますか?それとも、これはPHPunitのバグですか?

0 投票する
2 に答える
2004 参照

php - SymfonyClassLoaderコンポーネントの例

SymfonyのClassLoaderコンポーネントと新しいPSR-0標準がどのように機能するかを理解するために、簡単な例を設定しようとしています。

最初にBar.phpを作成しました:

次に、autoloader.phpを作成しました(ベンダーパスの下にClassLoaderコンポーネントがあります)。

最後に、Foo.phpを作成しました。

しかし、私が実行すると:

次のエラーメッセージが表示されます。

PHP警告:非複合名「Acme」のuseステートメントは、4行目のFoo.phpでは効果がありません。

PHPの致命的なエラー:7行目のFoo.phpにクラス「Bar」が見つかりません

私はここで何が間違っているのですか?

更新

を使用する代わりに、をnamespace Acme使用するnamespace Acme\BarBar.php、上記と同じエラーメッセージが表示されます。

0 投票する
1 に答える
838 参照

php - Symfony2 の CssSelector コンポーネント (DomCrawler 内) で機能しない特定のセレクター構文

dom クローラー、具体的には CssSelector コンポーネントについて質問があります。私が走るとき

多次元リストでは、すべての直接の子を取得します。しかし、私が走るとき

すべての子孫を取得することを期待していますが、代わりに何も取得しません。私は何を間違っていますか?

0 投票する
1 に答える
940 参照

php - Symfony コンポーネントの BinaryFileResponse クラスで使用すると、XSendfile が断続的に文字化けした応答を出すのはなぜですか?

バックグラウンド

私のアプリケーションの責任の一部は、制御された方法で静的リソース (CSS、JavaScript、画像) の要求を処理することです。いくつかのアプリケーション ロジックに基づいて、さまざまな時間にさまざまなユーザーにその URL で提供される可能性のあるさまざまなファイルの選択から 1 つを返します。したがって、これらは静的ファイルですが、動的な方法で配信されます。

アプリケーションは Symfony コンポーネントに基づいており、これらの静的なファイルの提供はBinaryFileResponseクラスによって処理されます。

ブートストラップ コードは次のtrustXSendfileTypeHeaderメソッドを呼び出します。

アプリケーションは、構成と検出および使用に基づいて、いくつかの内部ロジックを使用して、apache_get_modules()可用性を判断します。XSendfileが利用可能で、構成でそれを使用するように指定されている場合、ヘッダーが設定されますX-Sendfile-Type

問題

XSendfile を使用しないように設定した構成でこれを実行するか、明らかに XSendfile をサポートしていない PHP 組み込み Web サーバーを介して実行すると、すべてが完璧です。

XSendfile を使用すると、ほとんどの場合、それも機能します。

ときどき、f5 キーを 3 ~ 4 回続けて押すと、「何か」が出てきて、文字化けした応答が返ってきます。たとえば、これは JavaScript ファイル (Firebug の「Net」の下の「Response」タブからコピー) であると想定されています。

hxYîãxHTTP/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 キャッシュ制御: public Last-Modified: Tue, 29 Jan 2013 13:33:23 GMT Accept-Ranges: bytes Content-Transfer-Encoding: binary ETag: "10426f-9f6-0" Vary: Accept-Encoding Content-Encoding: gzip Content-Length : 1011 キープアライブ: タイムアウト = 5、最大 = 98 接続: キープアライブ コンテンツ タイプ: アプリケーション/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¿

応答本文にヘッダーが存在することに注意してください。残りの部分は明らかに JavaScript ではありません。また、最初に偽の文字がいくつかあります。これが、ヘッダーが本文にプッシュされる原因となる可能性があります。このコンテンツが gzip の結果であるかどうかを判断しようとしましたが、まだ確認できません。(以下の更新も参照してください)

質問

まず、BinaryFileResponseテキスト (非バイナリ) ファイルを提供するために使用する正しいクラスはありますか? このクラスのドキュメントには、「BinaryFileResponse はファイルを配信する HTTP 応答を表す」としか書かれていません。これはあまり詳細ではありませんが、「バイナリ」ファイル専用であることについては何も述べていません。ただし、名前には独自の意味があります。なぜ Fabien はこのクラスを呼び出さなかったのFileResponseですか?

第二に、さらに重要なことは、これを引き起こしている可能性があるのは何ですか? Firefox と Chrome の両方で再現可能であるため、ブラウザの問題ではないと思います。これは XSendfile モジュールまたはBinaryFileResponseクラスのバグですか? (以前は Symfony コンポーネント経由ではなく、より「生の」方法で使用したことがあり、そのような問題はなかったので、前者ではないと思う可能性があります)。

他の誰かがこれを経験しましたか?これを追跡するためにどこから始めるべきか考えていますか? 私はBinaryResponseFileソースコードを見てきましたが、実際には XSendfile ではあまり機能しません。関連するヘッダーを設定し、応答本文のコンテンツを防止するだけです。

アップデート

これらの文字化けした応答について、いくつかのことに気付きました。

  1. 送信される実際のヘッダーはまったくありません。つまり、Firebug の [ヘッダー] タブでは、文字化けした応答に対して、要求ヘッダーのみがリストされ、応答ヘッダーの見出しさえ表示されません。
  2. PHP で応答にカスタム ヘッダーを設定しても、そのヘッダーは文字化けした応答 (ヘッダーまたは応答本文) にはまったく表示されませんが、破損していない応答に対してはカスタム ヘッダーが正しく表示されます。
0 投票する
1 に答える
383 参照

php - yamlリソースファイルでコントローラーをサービスとして使用する方法

SilexFrameworkを使用しています。私はそのように使用される単純なルートリソースローダーを書きました:

ソースコードはここにあります:https ://github.com/Mparaiso/silex-extensions/blob/master/src/Mparaiso/Provider/RouteCollectionLoaderProvider.php

たとえば、通常の方法で名前が付けられたルートをyamlファイルにロードできます

しかし、サービスとして定義されたコントローラーをロードできません:

コントローラをリソースファイルのサービス構文として使用できるようになるには、何が必要ですか?

ありがとう

0 投票する
2 に答える
1174 参照

dependency-injection - Symfony 2 コントローラーの依存関係、ContainerAware の拡張

編集

symfony コード、特に ControllerResolver を掘り下げた後、自分で ControllerResolverInterface をサブクラス化/実装しない限り、実際にやろうとしていることはできないようです。

これは、ルートから渡されたコントローラーをインスタンス化する次のコードです。

最後の行でわかるように、これは常に引数を渡さずにインスタンス化されるため、この方法で何かを注入するには、このメソッドをオーバーライドする必要があります。非常にハッキーな感じです。


元の質問

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/コンポーザーを使用して依存関係をインストールしているため、ディレクトリもあります。console.php非常に簡単です:

console.phpphar のビルドについて (少し) 理解していることから、スタブとして含める必要があるsrc/と思いますvendors/

phpmaster.comのサンプル コードを見ると、すべてのファイルを phar を使用して手動で指定していますfile_get_contentsが、コンポーザーのオートローダーを使用して PSR-0 ディレクトリ構造を維持するには、ディレクトリ構造を維持する必要があります。

.phar を作成し、その中にディレクトリ構造を維持して、composer のオートローダーを引き続き使用できるようにする簡単な方法はありますか?

0 投票する
1 に答える
993 参照

symfony - Validator コンポーネントでの翻訳

現在、Symfony Validator Component をカスタム PHP アプリケーションに統合しています。これまでのところ、すべてがうまく機能しており、ユーザー入力を検証できます。

ここで、検証メッセージを別のロケールに翻訳し、翻訳コンポーネントを統合したいと考えています (DefaultTranslator の TranslatorInterface との依存関係のために必要です)。

デフォルトの Translator は、ValidationConstraints にハード コードされているロケールのみをサポートします。調べた限りでは、Validator コンポーネントの xliff ファイルから文字列をロードするカスタム Translator インスタンスを指定する必要があります。

これは私が得た距離ですが、残念ながらドイツ語の翻訳はロードされませんでした:

ここで見逃している可能性のある提案はありますか?

0 投票する
1 に答える
826 参照

symfony-forms - Symfony2 スタンドアロン フォーム コンポーネント v2.3 - フォームのセットアップ

これは、 Symfony2 スタンドアロン フォーム コンポーネント - フォームの設定 で尋ねられたのと同じ質問です。この質問に対する答えは、問題を完全に解決しているようです。

残念ながら、この質問がされたとき、フォーム コンポーネントのバージョンは 2.0.x でした。それ以来、いくつかの変更がありました。

周りを見回しましたが、最新バージョンでこれを行う方法に関するドキュメントや例は見つかりませんでした。

Symfony2 の外部でフォーム コンポーネントを使用するサンプル アプリケーションの更新バージョンはありますか?