この投稿を開始したのは、ユーザー セッション (Symfony 1.4) から値を取得/設定する方法を知るためです。Get は完全に機能しますが、Set は機能しません。グローバル セッション ($_SESSION) は更新されているが、ユーザー セッションは更新されていないことを Debug Modus で確認できます。私はこの方法、この方法、別の方法、少なくともこれを試しました...成功しませんでした。Symfony 1.4 のそのようなバグについて読んだことはありません。私はブラウザ(Linux)としてFirefoxとChromeを使用しています(匿名タブでもテストしました)。
Modus User のデバッグは次のようになります。
attributeHolder:
myNS: {
aValue: '15',
ns_15: {
Tel: '78568951',
myID: '15',
anotherID: '120',
anArray: [{
arrayID: '78',
Company: 'myComp'
}] },
ns_17: { ... }
}
aValue属性を変更し、削除して再挿入できます。しかし、ns_15またはns_17は削除または変更できますが、この変更は (symfony Debug Mode) Userに影響を与えることはできませんが、$_SESSION (symfony Debug Modus Globals )に入るだけで、更新された値を確認できます。
symfony 1.4 でユーザーセッションに値を設定/変更/削除または書き込む別の方法はありますか?それとも Symfony のバグですか?
編集1
このバグとこのブログを見るまで、私はそれを理解していません!! さて、私はAJAXを使用してコントローラーを呼び出しています。それが、Session に書き込めない理由かもしれません。もう 1 つの方法は、実際には sfWebResponse をサブクラス化できないため、アクションが既に sfActions をサブクラス化しているためです。:(
EDIT2
Edit1がこれを作ろうとしたので:
$sessionData = $this->getUser()->getAttribute("ns_15", array(), "myNS");//all good
$sessionData["Tel"] = "0111111110";
var_dump($sessionData["Tel"]);//show me 0111111110
$this->getUser()->setAttribute("ns_15", $sessionData, "myNS");
$this->getUser()->shutdown();
sfContext::getInstance()->getStorage()->shutdown();
2 回リロードする動作は解決されましたが、まだ $_SESSION と USER SESSION に書き込めません。(同じトラブルも)。