【问题标题】:Missing argument 1 for page::sponsor()page::sponsor() 缺少参数 1
【发布时间】:2015-11-29 14:49:12
【问题描述】:

我遇到了这个非常令人沮丧的错误。我正在从另一个函数调用赞助商函数并传递一个参数。然而,赞助商函数不断给出缺少参数的错误。

这是我的代码:

// get random sale
public function RandomSale() {
    static $sale = null;
    if(!isset($sale)){
        $sale = Sale::get()->filter(array('Title:not' => null))->sort("RAND()")->Limit('1');
        $this->sponsor(8);
    }
    return $sale;
}

public function sponsor($memberid) {
    $sponsor = Sponsor::get()->filter(array('MemberID' => $memberid))->Limit('1');
    return $sponsor;
}

我该如何解决这个问题?

【问题讨论】:

  • 你确定这是你调用sponsor()函数的唯一地方吗?
  • 是的,这是唯一的地方。
  • 你能粘贴整个错误消息吗,也许有跟踪?尝试进入开发模式,然后您将看到一个跟踪日志以及调用赞助商方法的位置...
  • [警告] PAGE::SPONSOR() 缺少参数 1,在 FRAMEWORK/VIEW/VIEWABLEDATA.PHP 第 363 行调用并已定义
  • 如果从RandomSale 函数中删除$this->sponsor(8); 行,错误会消失吗?

标签: php oop silverstripe


【解决方案1】:

尝试将sponsor() 函数命名为更具体的名称,例如SponsorByID($memberID)。您的 Sponsor DataObject 和 sponsor() 函数之间可能存在命名冲突。

【讨论】:

    【解决方案2】:

    数字 8 甚至不太可能被传递给方法赞助商()。尝试将其输入为 $this->sponsor('8') 以查看是否仍然出现错误。如果没有,那么快乐的日子。

    附:正如 elliot_at_silverstripe 所说,尝试清理您的代码以遵循 SilverStripe 编码约定。稍后您可能会感谢自己。 :) https://docs.silverstripe.org/en/3.2/getting_started/coding_conventions/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多