0

これが新しいレコードであるかどうかを確認する条件を実行すると、この致命的なエラーが発生します。そうである場合は、データベースに重複するドラフト レコードを作成します。

アクション.クラス.php

$this->form = new AlertsForm($active_alert);
    if ($request->isMethod('post')) {
      $this->form->bind($request->getParameter('alerts'), $request->getFiles('alerts'));
      if ($this->form->isValid()) {
        try {
          /* check if record is the draft version, and if not create one */

          if (!$active_alert->isNew() && !$active_alert['is_preview'] && 
              ($request->getParameter('button_type') != 'publish' || 
              !$this->getUser()->hasPublishingPrivilege())) {

            $active_alert = $active_alert->createDraft();
            $values = $request->getParameter('alerts');
            $values['id'] = $active_alert['id'];
            $this->form = new AlertsForm($active_alert);
            $this->form->bind($values, $request->getFiles('alerts'));

            $this->getUser()->setFlash('draft', true);
          }

エラー:

Fatal error: Call to a member function isNew() on a non-object in apps/cms/modules/alerts/actions/actions.class.php on line 35

で var_dump を実行すると$active_alert、次のように返されます。

bool(偽)

このコードの古い作業バージョンは同一であるため、この正確なコードが間違っているかどうかはわかりません。どこを見ればよいかわかりません。

4

1 に答える 1

1

致命的なエラーは、エラーメッセージが示すように、$ active_alertがない、つまり非オブジェクトであり、非オブジェクトを呼び出そうとしているためですisNew()

あなたができることは、$active_alertそれが新しい(そうでない)かどうかをチェックする前に、の存在をチェックすることです:

if ($active_alert && !$active_alert->isNew() && !$active_alert['is_preview'] && ...

于 2012-11-08T04:50:54.213 に答える