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,它会返回:

布尔(假)

这段代码的旧工作版本是相同的,所以我不确定是不是这个确切的代码是错误的,我只是不知道在哪里看。

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 回答