問題タブ [silex]
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 - ApacheBench は非常に遅い
Slim と Silex のマイクロ フレームワークを使用して 2 つのベンチマーク ページを作成し、それらの速度をテストしました。
Chrome デベロッパー ツールの結果:
スリム: 7ms
サイレックス:16ms
ApacheBench の結果:
ab
スリムで何がそんなに遅いのか理解できません。この問題に関するアイデアはありますか?
PS ご覧のとおり、ブラウザでページをリクエストするのに問題はありません。また、高速curl
です。
php - Silex プロジェクトでの ProcessBuilder の使用
Symfony\Component\Process\ProcessBuilder クラスを使用したいのですが、vendors フォルダー内の Silex コードベースの一部として含まれていることがわかります。私は Silex phar ファイルを使用していますが、Request、Response などの他の Symfony コンポーネントを簡単にインスタンス化できるため、完全な名前空間を使用すると、含めるファイルを正しく見つけることができると想定しています。
ただし、次を使用して作成してインスタンスを作成しようとすると:
クラスが見つからないというエラーが表示されます。これがなぜなのか、プロジェクト内にコンポーネントを個別に含めることなく Silex phar からこのクラスを使用する方法を知っている人はいますか?
php - 翻訳なしのSilexフォーム検証
Silexのサービスプロバイダーを使用して、検証付きの単純な連絡フォームを作成したいのですが、ビューをレンダリングするとTwig_Error_Syntaxが存在するため、翻訳サービスプロバイダーのみのようです'フィルター"trans"は存在しません'、I 'form_div_layout.html.twig'をカスタマイズ(オーバーライド)してトランスフィルターを削除する必要があるためだと思いますか?翻訳は必要ありません。
まだ検証を実装していません。
これが私のコードです:
および連絡先ページ:
php - Silexを使用してaddFilterを小枝しますか?
Silexを使用するときにカスタムフィルターをTwigに接続し、既存のフィルターをtwig.options
そのまま維持する正しい方法は何ですか?
これが私の言いたいことです。私は次のコードを持っています:
そのコードをそのまま実行すると、フィルターが機能しません。
代わりに、TwigはPREVIOUS REQUESTの無限にキャッシュされたバージョンを返します(キャッシュの内容をクリアした場合でも、これは、上書きしているためにキャッシュが別の場所に保存されているためだと思いますtwig.options
...わかりません)。
ただし、次の行を捨てると:
...その後、すべてが機能します。
どうすれば2つをうまくプレイさせることができますか?つまり、キャッシュを保持し、カスタムフィルターを追加しますか?
ありがとう!
php - Silex\Appではセッションが機能しません
何らかの理由で、セッションは私のSilexアプリでは機能しません。php.iniでerror_reportingをに設定するE_ALL | E_STRICT
と、エラーが表示され、ログに記録されます。そこには何も見えません。ただし、何らかの理由でセッションが作成されず、ファイル/project-root/tmp/sessions/
もありません(また、デフォルトのsession.save_pathを使用している場合も同様です)。ファイルシステムの読み取り/書き込み権限の問題を除外するためにPdoSessionStorageに切り替えても、結果は得られませんでした。$app['session']
また、$request->getSession()
を切り替えてみましたが、$app['request']->getSession()
役に立ちませんでした。
私は他にどこで問題を探すべきかについて途方に暮れています...
これは私が書いた非常に単純なテストアプリです(use
スペースを節約するために省略されています)。基本的に、このテストは、実際のアプリで何を達成しようとしているのかを示しています。セッションに配列を格納したい。で、$app->before()
値が設定されているかどうかを確認し、それを小枝に渡して表示します。たとえば、ログイン情報You are logged in as {{ user.name }}
::
sessiontest.twigは次のようになります。
/に移動すると何も表示されず、/ testに移動すると、「get:test」のみが表示されます(ただし、以前に/に戻ることも、トリガーを更新することもないため、実際には保存されません)。
http - Silex: 新しいリクエストを別のルートに戻しますか?
Silex を使用して Web アプリを構築しようとしています。一部のルートでは、結果を別のルートへの新しいリクエストにしたいと考えています。
これはかなり標準的なユースケースであるべきだと私には思えますが、これを行う簡単な方法が見つかりません。私は知ってredirect
いますが、最初の関数で作成された新しいポストパラメーターのセットを使用したくないので、リダイレクトしたくありません。
私は Silex/Symfony と HTTP の両方にかなり慣れていないので、何か重要なものが欠けているのではないかと思っています。
編集:現在の Request オブジェクトを変更し、投稿データを独自のパラメーターに置き換えてからリダイレクトを行うことを考えていたことを付け加えるかもしれませんが、そのための Request クラスでのサポートはないようです。
forms - Silex を使用してフォームの CSRF 保護を無効にする
私は現在、小規模なプロジェクトに Silex を使用しています。その方法でフォームサービスを登録しました:
そして、を使用してフォームを作成します$form = $app['form.factory']->createBuilder('form');
HTML メールにフォームを埋め込む必要がありますが、CSRF 保護により、メール内のフォームに直接回答することができません。
この特定のフォームまたは他のすべてのフォームの保護を無効にする方法 (Symfony2 で行う方法は知っていますが、Silex ではできません..)
ご回答ありがとうございます。
exception - Silex: 特定の例外タイプのエラー ハンドラ
Silex で、スローされた例外に基づいてエラー ハンドラを使用することは可能ですか?
これは、単一の例外ハンドラーと、スローされた例外のクラス名の switch ステートメントで可能であることを知っていますが、「Silex の方法」の方がクリーンなように見えますが、機能しません。
これは私がそれがうまくいくと期待する方法です
問題は、コントローラーで ResourceNotFound 例外をスローすると、AccessDenied に関連付けられたエラーハンドラーが実行されることです。
キャッチ可能な致命的なエラー: {closure}() に渡される引数 1 は、App\Rest\Exception\AccessDenied のインスタンスである必要があります。与えられた App\Rest\Exception\ResourceNotFound のインスタンスです。
これは別の方法で達成できますか、それとも一般的な例外で動作するハンドラーにすべてを詰め込み、スローされる例外の種類をオンにする必要がありますか?
PS:私はその$app->abort()
方法を知っていますが、例外を扱うことを好みます
php - Symfony\Component\DependencyInjection を使用してパスで Silex アプリケーションを構成する
Silex\Application
現在、当初の予想よりも大きくなった a をリファクタリングしています。この作業の一環として、サービス定義をソースから services.yml に移動し、Symfony\Component\DependencyInjection\ContainerBuilder
代わりに a を呼び出します。コードは次のようになります。
の作成の一部である次のコード行を考えてみましょうDoctrine\ORM\EntityManager
。
私のservices.ymlでは次のようになります。
最後に、私の質問です。たとえば、Doctrine-Setup の最初の引数としての代わりに[src/Project/Entity]
、次のようなことをしたい:[%ROOT_PATH%/src/Project/Entity]
の%ROOT_PATH%
ように ContainerBuilder に追加されます。$container->???('ROOT_PATH', dirname(__DIR__))
.
ドキュメントにはこのようなものは何も見つかりませんでした。ContainerBuilder.php を読んで何かを見つけられるかどうかを確認しますが、用語についてはわかりません。たとえば%OOT_PATH%
、私のシナリオでは変数、定義、エイリアスであるかどうか...