1

少し長いショットですが、誰かがこれに光を当てることができますか?

最近、単一のインストールから複数のサイトを実行するサブサイト モジュールをインストールしましたが、「フォーム オブジェクトのサブ URL を処理できません」というエラーが表示されます。画像ギャラリー オブジェクトに説明/タイトルを追加しようとすると。サブサイトを削除して、これが問題の原因であることを確認しました。私は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; 
   } 
}
4

2 に答える 2

1

残念ながら、「フォーム オブジェクトのサブ URL を処理できません。」は非常に一般的なエラー メッセージであり、私の経験からすると、デバッグがかなり難しいものです。

正直なところ、Subsites モジュールは私の意見ではそれほど素晴らしいものではありません。機能しますが、それほど優れているわけではなく、他のモジュールとの互換性もあまりないと思います。

あなたのエラーの理由は、silverstripe がポップアップ内の SubsiteID を忘れたためであると想像できます。そのため、SilverStripe は、編集中の現在のページを見つけることができなくなりました (作成したページのすべてのクエリにフィルター WHERE SubsiteID = x を追加するため)。 )

デバッグを開始する場所の 1 つは、Subsite::currentSubsiteID() にフックして、ポップアップにいるときに SubsiteID が記憶されているかどうかを確認することです。

また、エラー メッセージが表示されたときに呼び出される正確な URL は何ですか?

于 2012-08-21T16:13:33.897 に答える
1

同じエラーが発生し、何時間も検索しました。/framework/control/Session.php に問題がありました

于 2013-01-30T16:40:15.040 に答える