Php 带有onBeforeWrite函数的SiteConfigExtension(DataExtension)
我创建了一个DataExtension来扩展我的SiteConfig 在我的扩展中,我有一个onbeforewite函数Php 带有onBeforeWrite函数的SiteConfigExtension(DataExtension),php,silverstripe,Php,Silverstripe,我创建了一个DataExtension来扩展我的SiteConfig 在我的扩展中,我有一个onbeforewite函数 public function onBeforeWrite() { parent::onBeforeWrite(); /* FILL SHOP EMAIL FIELDS */ if(! $this->ShopEmail ){ $this->ShopEmail = 'foo';
public function onBeforeWrite() {
parent::onBeforeWrite();
/* FILL SHOP EMAIL FIELDS */
if(! $this->ShopEmail ){
$this->ShopEmail = 'foo';
}
if(! $this->ShopFromEmail ) {
$this->ShopFromEmail = $this->ShopEmail;
}
if(! $this->ShopReplyEmail ) {
$this->ShopReplyEmail = $this->ShopEmail;
}
/* SHOW ADD TO CART BUTTON IF THERE IS NO ITEMDETAIL PAGE */
if( $this->ShopItemDetailPage == 0 ) {
$this->ShopDirectItemToCart = 1;
}
}
这个函数就是不起作用。
使用if子句,我会收到一个通知,它将我指向onbeforewite函数的第一行。没有它,什么也做不了
这是为什么?我如何解决这个问题
提前感谢您因为您使用的是DataExtension,而不是DataObject,所以有一些差异需要注意
第一个是导致错误的原因,即父类上没有onBeforeWrite,因此调用parent::onBeforeWrite试图调用未定义的方法并引发致命错误
第二个问题只会引起警告,即DataExtension上没有定义数据库字段,因此需要使用$this->owner来访问它们。例如,$this->owner->shopmail。由于您使用的是DataExtension,而不是DataObject,因此有两个不同之处需要注意
第一个是导致错误的原因,即父类上没有onBeforeWrite,因此调用parent::onBeforeWrite试图调用未定义的方法并引发致命错误
第二个问题只会引起警告,即DataExtension上没有定义数据库字段,因此需要使用$this->owner来访问它们。例如,$this->owner->shopmail。这将是$this->owner->shopmail,因为您在扩展中,而不是扩展类本身……谢谢,但为什么不作为答案呢;这将是$this->owner->shopmail,因为您在扩展中,而不是扩展类本身…谢谢,但为什么不作为答案呢;非常感谢。老板解决了这个问题。您确定使用onBeforeWrite函数吗?因为现在它起作用了。是的,他是:。onbeforewrite等函数在扩展代码中没有父::部分的情况下工作。不会出现错误,因为函数是在DataExtension类的父类中定义的。这是一个空函数,实际上什么都不做,但可以避免一个错误。谢谢!老板解决了这个问题。您确定使用onBeforeWrite函数吗?因为现在它起作用了。是的,他是:。onbeforewrite等函数在扩展代码中没有父::部分的情况下工作。不会出现错误,因为函数是在DataExtension类的父类中定义的。这是一个空函数,实际上什么也不做,但可以避免一个错误。