Прикрепите изображение к странице с помощью Uploadify в Silverstripe CMS

Мы хотим использовать модуль Uploadify, чтобы пользователи Silverstripe CMS могли просто загружать изображения, которые затем прикрепляются к страницам. На базовом уровне это код:

class Page extends SiteTree {

       static $has_many = array( 
         "PageImages" => "PageImage" 
      );

       function getCMSFields(){ 
          $fields = parent::getCMSFields(); 
          $fields->addFieldToTab("Root.Content.PageImages", new MultipleFileUploadField('PageImages','Add Images to Page'));       
          return $fields; 
       } 
    }

    class PageImage extends Image { 

       static $has_one = array( 
          "Page" => "Page" 
       ); 

    }

Однако когда файл загружается через вкладку «Загрузить новый», он не прикрепляется к странице автоматически. Мы думали, что это будет поведение по умолчанию.

Вместо этого пользователи CMS должны щелкнуть вкладку «Выбрать существующие» и выбрать/импортировать изображения, которые им нужны.

Я предполагаю, что мы пропустили что-то очень простое, любая помощь будет оценена по достоинству.


person BaronGrivet    schedule 15.11.2011    source источник


Ответы (2)


Вы действительно расширяете само изображение? Это возможно, но вместо этого я всегда использовал DataObject. Таким образом, у Page has_many PageImages, у PageImage есть_one Page и у PageImage есть_one Image.

См. также http://deadlytechnology.com/silverstripe/silverstripe-image-gallery/. или https://github.com/xeraa/silverstripe-book/tree/master/chapter-07/module_gallery/code для полных примеров. Примечание. Оба используют модуль DataObjectManager.

И я поддерживаю предложение ryanwachtl разделить файл (если вы этого не сделали, и это просто проблема со стилем в stackoverflow).

person xeraa    schedule 16.11.2011
comment
Я разделил PageImage (которое я переименовал, спасибо @ryanwachtl) на собственный DataObject. Оглядываясь назад, я, вероятно, пытался быть слишком умным. - person BaronGrivet; 17.11.2011

Просто предположение, но если PageImage class определено в Page.php, вы можете изменить его на Page_Image, чтобы следовать соглашениям SilverStripe.

person ryanwachtl    schedule 16.11.2011