如何在Silverstripe 4

时间:2018-02-19 00:03:15

标签: php silverstripe silverstripe-4

Silverstripe 4项目有一个扩展的页面,它自动生成一个" MetaImage"在保存,然后应该附加到页面。示例代码如下:

class ExamplePage extends \Page
{

  private static $has_one = [
    'MetaImage' => 'SilverStripe\Assets\Image'
  ];

  public function onBeforeWrite()
  {

    if ($this->MetaImageID == 0) {
      $metaObjectImage = new Image();
      $metaObjectImage->setFromLocalFile($tmpFolder.'/'.$fileName);
      $metaObjectImage->ParentID = $saveFolder->ID;
      $metaObjectImage->Title = $this->Title;
      $metaObjectImage->write();
      $metaObjectImage->doPublish();
      $this->MetaImageID = $metaObjectImage->ID;
     }

      parent::onBeforeWrite();
   }
 }

然而,图像正连接到"舞台"版本,但不是" Live"版。 MetaImageID在数据库的ExamplePage表中更新,但不在ExamplePage_Live表中更新。

我猜这个问题是$this->MetaImageID = $metaObjectImage->ID;没有正确设置关系,但我不确定如何更改这个,所以它确实保存到" Live"发布ExamplePage时。

0 个答案:

没有答案