私はプラグインでmodX Revoを使用していますLoginとBabelです。 Babelのマニュアルに書かれているように、私は2つの言語に対して2つのコンテキストを作成し、TVパラメータを使用してcontextSwitchプラグインを作成しました。ほとんどの場合、マニュアルの例のプラグインに似ています。その後、イベントHandleRequestにプラグインを入れました。ModX Revolutionでコンテキストが切り替わらない
ログイン後にコンテキストを切り替える以外はすべて動作しています。ユーザーが承認されている場合、modXはメインページのみを表示し、その他は404ページを表示します。私はコード内でうんざりして、モデルmodx(/core/model/modx/modx.class.phpの1843行目)のswitchContextメソッドがfalseを返すことを発見しました。
public function switchContext($contextKey, $reload = false) {
$switched= false;
if ($this->context->key != $contextKey) {
$switched= $this->_initContext($contextKey, $reload); // RETURNS FALSE
if ($switched) {
if (is_array($this->config)) {
$this->setPlaceholders($this->config, '+');
}
}
}
return $switched;
}
コンテキストは開始できません(同じファイルの同じクラスの_initContextメソッド)。コンテキストは正しく生成されますが、$ this-> context-> checkPolicy( 'load')はfalse(同じファイルの2169行近く)を返します。
protected function _initContext($contextKey, $regenerate = false) {
// HERE IS EVERYTHING ALLRIGHT
$initialized= false;
$oldContext = is_object($this->context) ? $this->context->get('key') : '';
if (isset($this->contexts[$contextKey])) {
$this->context= & $this->contexts[$contextKey];
} else {
$this->context= $this->newObject('modContext');
$this->context->_fields['key']= $contextKey;
}
if ($this->context) { //HERE TRUE
if (!$this->context->prepare((boolean) $regenerate)) { // HERE TRUE
$this->log(modX::LOG_LEVEL_ERROR, 'Could not prepare context: ' . $contextKey);
} else {
if ($this->context->checkPolicy('load')) { // HERE FALSE - MODX CAN'T DO IT
// .. SOME OTHER modX CODE
その後、私はコアにぶつかるのをやめました。誰かがすでに何かを見たことがあるかもしれませんか、またはmodx Revoコアが、modxがユーザがログインしているときにコンテキストを切り替えることができない理由に答えるのに良いと知っていますか?
p.s.私はコンテクストスイッチプラグインのために別のイベントを使用しようとしました - もちろん、このイベントはプラグインにとって最も正しいものです。そして、私はmodxがユーザがログインしている間だけコンテキストを切り替えることができないことを強調しています!
UPDATE
私はいくつかの権限を編集しようとしました。しかし、何も起こっていない(私は現金をクリアし、すべてのユーザーを悩ませた)。
UPDATE 2つの 権限が間違っていた:彼らはすべて9999と「リスト、veiw、負荷」でなければならない。ここコンテキスト権限のscreeshot(nonEnglish申し訳ありません、しかし、それは明らかなはずである)です。しかし、私が前にしたように第二の文脈にいる間、私は同時にログインできません。今私はそれが同じ問題かどうかを調べようとしました。ログインで第二の問題は非常に簡単solvinegさ
UPDATE 3 :スニペットでは、&コンテキスト= web,eng
ありがとうございました!しかし、それは働いていないか、私は何か間違っているようです。ここでは、コンテキスト編集フォームから画面が表示されます(英語以外のインターフェースには申し訳ありませんが、明らかです)。http://habrastorage.org/storage2/19e/7c9/d17/19e7c9d1746481d7e17d4511147793d6.gif – Ist
ランク(3列目) "Users"グループで0に設定されています(これは世界が逆さまになっているように聞こえます)。そうすれば、ユーザーはユーザーグループ内でランクが高くない可能性があります。ユーザーgoups内で異なる役割を使用しない限り、私はそれを単純にし、すべての権限に9999のランクを与えることをお勧めします。これは最低です。 –
ありがとうございました。私は1つのコンテキストでログインし、言語を切り替えている場合、今働いています。しかし、私が "eng"にログインしようとすると、文脈は何も起こらない。同じ問題があるかもしれませんが、私はそうではありません。権限が間違っているとログインできませんでした。 – Ist