Warning [PHP]: array_key_exists() [function.array-key-exists

質問全般・改善要望
返信する
yoshis
メンバー
メンバー
記事: 4
登録日時: 2010年11月15日(月) 23:06

Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yoshis »

MODx v1.0.4J-r4 ですが、Warning出ます。

コード: 全て選択

Warning [PHP]: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in file manager/includes/document.parser.class.inc.php line 683
元ソース

コード: 全て選択

    function mergeSettingsContent($template) {
        $replace= array ();
        $matches= array ();
        if (preg_match_all('~\[\(([a-z\_]*?)\)\]~', $template, $matches)) {
            $settingsCount= count($matches[1]);
              for ($i= 0; $i < $settingsCount; $i++) {
                if (array_key_exists($matches[1][$i], $this->config))
                    $replace[$i]= $this->config[$matches[1][$i]];
              }
            $template= str_replace($matches[0], $replace, $template);
        }
        return $template;
    }
を以下に変更しました。

コード: 全て選択

    function mergeSettingsContent($template) {
        $replace= array ();
        $matches= array ();
        if (preg_match_all('~\[\(([a-z\_]*?)\)\]~', $template, $matches)) {
            $settingsCount= count($matches[1]);
          if ($this->config){
              for ($i= 0; $i < $settingsCount; $i++) {
                if (array_key_exists($matches[1][$i], $this->config))
                    $replace[$i]= $this->config[$matches[1][$i]];
              }
          }
            $template= str_replace($matches[0], $replace, $template);
        }
        return $template;
    }
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yama »

報告ありがとうございます。$templateという変数名も$sourceに直したほうが紛らわしくなくてよいかもですね。

ちょっと不思議に思ったのですが、$this->config($modx->config[xxxxx'])が得られないケースってどういう状況かな?と思いました。
このエラーが出るタイミングって、特定の条件で操作を行なった時ですか?(リソースの内容によったりとか)
yoshis
メンバー
メンバー
記事: 4
登録日時: 2010年11月15日(月) 23:06

Re: Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yoshis »

yama さんが書きました: ちょっと不思議に思ったのですが、$this->config($modx->config[xxxxx'])が得られないケースってどういう状況かな?と思いました。
このエラーが出るタイミングって、特定の条件で操作を行なった時ですか?(リソースの内容によったりとか)
オリジナルソースでは prepareResponse で outputContent してますが、header と body 分けて処理したかったり、 body の中身だけ拾ってゴニョゴニョ(私の場合はsmartyに投げたかったり)という都合で全部 echo で吐き出されてるのも困りものだな~と。そこで、独自にgetDocumentObjectしてinvokeEvent("OnLoadWebDocument")してます。

そんな感じで触っていたのですが、snipetがevalで呼び出せない所で詰まっていて、とりあえずwarrning潰してソースを整理していた所です。呼び出す前にconfigもきちんと入れておかねばなりませんね。有り難うございます。config.inc.php呼び出すだけでイケると思ってたのですが、何か足りなかった様で・・・ :roll:
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yama »

コード: 全て選択

define('MODX_API_MODE', true);
include('/real_path/manager/includes/config.inc.php');
include(MODX_MANAGER_PATH . 'includes/document.parser.class.inc.php');
startCMSSession();
$modx = new DocumentParser;
$modx->db->connect();
$modx->getSettings();
ちゃんと書くとこんな感じかな?
本来はMODX_API_MODEをtrueにセットしてindex.phpを読み込むだけでいいような仕組みを想定してあるみたいですが。
yoshis
メンバー
メンバー
記事: 4
登録日時: 2010年11月15日(月) 23:06

Re: Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yoshis »

yama さんが書きました:

コード: 全て選択

define('MODX_API_MODE', true);
include('/real_path/manager/includes/config.inc.php');
include(MODX_MANAGER_PATH . 'includes/document.parser.class.inc.php');
startCMSSession();
$modx = new DocumentParser;
$modx->db->connect();
$modx->getSettings();
ちゃんと書くとこんな感じかな?
本来はMODX_API_MODEをtrueにセットしてindex.phpを読み込むだけでいいような仕組みを想定してあるみたいですが。
おお~、warning出ないですね。wayfinderもdittoも来ました。Thanks a lot!!!

コード: 全て選択

$modx->db->connect();
$modx->getSettings();
ここら辺抜けてました。

コード: 全て選択

[!WebLogin? &tpl=`FormLogin` &loginhomeid=`1`!]
SEARCH[!AjaxSearch? &ajaxSearch=`1` &landingPage=`8` &moreResultsPage=`8` &addJscript=`0` &showIntro=`0` &ajaxMax=`5` &extract=`1`!]
今は、上の表記がorzですが、大分前進しました。有り難うございます。(^_^)/
WebLoginって、 openID とか twitter Login とかもイケるのかな・・・ :?:
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yama »

http://www.google.com/cse?cx=0072861470 ... gin+openid
OpenIDはよく分からないですが、それっぽい情報はありますね。

http://www.modx.wangba.fr/index.php?id=142
AjaxSearchは公式ドキュメントの古い内容とはパラメータが変わってます。最新ドキュメントは上記です。
変更点などはajaxsearchフォルダの中にテキストファイルがいくつかあって、その中に書かれていたと思います。
関係ないかもしれないけど、いちおう目を通しておくとよいかも。古いパラメータを指定してるとアラート出すようには作ってあるみたいですけどね。
yoshis
メンバー
メンバー
記事: 4
登録日時: 2010年11月15日(月) 23:06

Re: Warning [PHP]: array_key_exists() [function.array-key-exists

投稿記事 by yoshis »

今日は色々と情報ありがとうございました。成果が出ましたら報告に上がりたいと思います。
ではでは・・・。
返信する