Silverstripe:我无法处理Form对象的子URL。子网模块

时间:2012-07-10 04:11:00

标签: php silverstripe

有点远,但任何人都可以对此有所了解吗?

我最近安装了子网站模块,以便从单个安装中运行多个网站,现在我收到错误:“我无法处理Form对象的子网址。”当我尝试向图库画廊对象添加描述/标题时。我删除了子网站以验证是否是导致问题的原因。我正在使用2.4

我可以很好地上传图片,但是当尝试从弹出窗口中保存问题时就会出现问题。

我也试过了默认字段,这仍然会产生同样的错误。

我的代码:

<?php

class Gallery extends Page {

   public static $db = array( 
      'SummaryText'=>'Text', 
      'GalleryText'=>'Text' 
   ); 

   static $has_many = array( 
      'Photos' => 'GalleryPhoto' 
   ); 

   function getCMSFields() { 
      $fields = parent::getCMSFields(); 


      $manager = new ImageDataObjectManager( 
         $this, // Controller 
         'Photos', // Source name 
         'GalleryPhoto', // Source class 
         'Image' // File name on DataObject 
      ); 
      $manager->uploadFolder = $this->URLSegment; 


      $fields->addFieldToTab('Root.Content.Main', new TextField('SummaryText', 'Summary Text (Appears in the section preview)'), 'Content'); 
      $fields->addFieldToTab('Root.Content.Main', new TextField('GalleryText', 'Gallery Text (entering anything in here will overwrite any image Titles and Descriptions)'), 'Content'); 
      $fields->addFieldsToTab("Root.Content.Gallery", array($manager));             
      $fields->removeFieldFromTab('Root.Content', 'StyledText'); 
      $fields->removeFieldFromTab('Root.Content', 'Column2'); 
      $fields->removeFieldFromTab('Root.Content', 'Content'); 


      return $fields; 

   } 


}

...

<?php

class GalleryPhoto extends Photo {

   public static $db = array( 
      'HTMLDescription'=>'HTMLText' 
   ); 

   static $has_one = array( 
      'Gallery' => 'Gallery' 
   ); 

   public function getCMSFields(){ 
      $fields = parent::getCMSFields(); 
      $fields->removebyname('Description'); 
      $fields->removebyname('Title'); 
      $fields->replaceField('HTMLDescription', new SimpleTinyMCEField('HTMLDescription')); 
      return $fields; 
   } 
}

2 个答案:

答案 0 :(得分:1)

不幸的是“我无法处理Form对象的子URL。”是一个非常通用的错误消息,根据我的经验调试相当棘手。

说实话,Subsites模块在我看来并不是那么好,它可以工作,但它不是那么好,而且与我猜的其他模块不兼容。

我可以想象你的错误的原因是因为silverstripe忘记了弹出窗口内的SubsiteID,因为SilverStripe无法再找到你正在编辑的当前页面(因为它为每个查询添加了一个过滤器WHERE SubsiteID = x你做的页面)

开始debuging的一个地方是挂钩到Subsite :: currentSubsiteID(),看看当你在弹出窗口时它是否记得SubsiteID

另外,收到错误消息时调用的确切URL是什么?

答案 1 :(得分:1)

我遇到了同样的错误,搜索了几个小时。这是/framework/control/Session.php

的问题