SilverStripe 3 проблема с несколькими UploadField

У меня проблема с несколькими UploadFields в SilverStripe CMS.

При загрузке нескольких изображений они отображаются правильно для загрузки и предварительного просмотра. Однако при сохранении страницы, перезагрузке и просмотре внешнего интерфейса изображение отсутствует. Там, где должен быть предварительный просмотр, это просто пустое изображение, и на интерфейсе нет вывода URL.

Изображение загружается в каталог активов, и путь к файлу в базе данных правильный. Я сейчас немного в растерянности.

Вот код из моей модели страницы

<?php
class Page extends SiteTree {

public static $db = array(
);  

public static $many_many = array(
    'Images' => 'Image'
);  

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

    $fields->addFieldsToTab('Root.Main', new UploadField('Images','Images',$this->Images()), 'Content');

    return $fields;
}   

}

person Mark Williams    schedule 19.10.2012    source источник


Ответы (2)


У вас проблемы только с внешним интерфейсом сайта? Не могли бы вы показать код, который вы используете в файле шаблона для отображения изображений?

это должно выглядеть

<% loop $Images %>
    $setSize(150,150) // whatever you want to use here
<% end_loop %>

Вы не можете использовать $Image.whatever, это не сработает.

person Ryan M    schedule 19.10.2012
comment
Это не только внешний интерфейс, но и CMS. - person Mark Williams; 21.10.2012
comment
попытка удалить $this-›Images() из функции addFieldsToTab(). - person Ryan M; 22.10.2012
comment
Была та же проблема, удаление $this-›Images() решило ее. Не уверен, откуда я скопировал / вставил это... - person nnevala; 04.02.2013

Предполагая, что вы используете тему по умолчанию «простая», создали страницу типа «Страница» в бэкэнде (CMS), загрузили изображения и опубликовали страницу.

Go to :

Корневая папка -> темы -> простые -> шаблоны -> макет -> открыть файл "Page.ss"

Тип (решение предоставлено «Райаном М.» выше)

<% loop $Images %>
    $setSize(150,150)
<% end_loop %>

После

<div class="content">$Content</div>

Перейдите во внешний интерфейс, указав URL своей страницы в адресной строке браузера.

person azeem    schedule 26.10.2012