最後にこれを解決したのは以下の通りです: すでにTwigの機能を拡張するクラスがあります。我々はを変え小枝ファイルで
public function addSession($url)
{
$sessionId = VisitorHolder::get()->getSessionId();
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $arrQuery);
if (empty($query)) {
$url .= '?'.self::OUR_SESSION_ID_VAR_NAME.'='.$sessionId;
} elseif (!empty($query) && empty($arrQuery[self::GKM_SESSION_ID_VAR_NAME])) {
$url .= '&'.self::OUR_SESSION_ID_VAR_NAME.'='.$sessionId;
}
return $url;
}
(と私は本当にそれを避けるために望んで):それは私たちがメソッドを持っているフォルダ../OurBundle/Twigに常駐し、そこ
class CoreExtension extends Twig_Extension implements Twig_Extension_GlobalsInterface {....
と呼ばれています次のようなliks:
<p>
<a loading="1" href="{{ orderlink }}">
{{ content.getDescription('DE','EN') }}
</a>
</p>
後:
<p>
<a loading="1" href="{{ orderlink | addSessionId }}">
{{ content.getDescription('DE','EN') }}
</a>
</p>
あなたはまだテンプレートのすべてのリンクを調べて、セッションが必要な場所に追加する必要があります。メソッドは、セッションがすでに接続されているかどうかを確認し、一度接続します。
また、同じ問題で立ち往生誰かを助けservices.yml
希望経由限り、あなたはそこにそれを渡すよう別のバンドルでこの拡張機能を使用することができます。
リクエストイベントリスナーでも可能だと思います。しかし、私は「ブラウザでクッキーを許可しない」という数倍のことを再考したい。どのように多くのユーザーがブラウザをこのように設定しましたか? – eRIZ
十分な人はそれを考慮する。とにかくデバッグのために必要になります。あなたは、プロダクトチームが来て、「このユーザーは私たちのアプリに問題がありました」という状況があることを知っています。セッションIDは、通常、「このユーザー」が誰であるか、彼が何をしたのかを知る唯一の方法です。 –
セッションIDをログに記録するのはどうですか? – goto