2015-11-29 4 views
3

У меня такая ужасная ошибка. Я вызываю функцию-спонсор из другой функции и передаю аргумент. Однако функция-спонсор продолжает выдавать недостающую аргументную ошибку.Отсутствует аргумент 1 для страницы :: sponsor()

вот мой код:

// 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; 
} 

как я могу это исправить?

+0

Вы уверены, что это единственное место, где вы называете 'sponsor()' функцией? –

+0

Да, это единственное место. – luukgruijs

+0

Вы можете вставить все сообщение об ошибке, возможно, с трассировкой? Попытайтесь перейти в режим dev, затем вы увидите tracelog, а также из того, откуда вызывается метод спонсора ... – wmk

ответ

3

Попробуйте назвать функцию sponsor() чем-то более конкретным, например SponsorByID($memberID). У вас может возникнуть конфликт имен между вашим спонсором DataObject и функцией sponsor().

0

Вряд ли число 8 передается методу(). Попробуйте ввести его как $this->sponsor('8'), чтобы узнать, есть ли у вас ошибка. Если нет, то счастливые дни.

P.S. Как говорит elliot_at_silverstripe, попробуйте очистить свой код, чтобы следовать правилам кодирования SilverStripe тоже. Вы можете поблагодарить себя позже. :) https://docs.silverstripe.org/en/3.2/getting_started/coding_conventions/

Смежные вопросы