image - Silverstripe Uploadify 添加字段

标签 image uploadify silverstripe

我希望将多张图片附加到 silverstripe 中的页面(最终将充当旋转画廊),并且想知道用户在上传每张图片时是否可以为每张图片添加链接?

最佳答案

是的。这可以通过 has_many 来实现与风俗的关系DataObject其中包含一个图像和一个链接对象。

在以下示例中,我们有一个 HomePage有一个 has_manySlide 的关系. Slide包含 ImageLink .

SilverStripe Lesson 9 - Working with data relationships - $has_many 中有一些关于这个主题的好信息.

我在这个例子中使用的可选排序模块是 SortableGridField .

银条 3.1

幻灯片.php

class Slide extends DataObject {

    private static $db = array(
        'Title' => 'Text',
        'SortOrder' => 'Int'
    );

    private static $has_one = array(
        'HomePage' => 'HomePage', 
        'Image' => 'Image', 
        'Link' => 'SiteTree'
    );

    private static $field_labels = array( 
        'Image.CMSThumbnail' => 'Image', 
        'Link.Title' => 'Link'
    ); 

    private static $summary_fields = array( 
        'Title',
        'Image.CMSThumbnail', 
        'Link.Title'
    ); 

    private static $default_sort = 'SortOrder ASC';
    private static $singular_name = 'Slide';
    private static $plural_name = 'Slides';

    public function getCMSFields() {

        $image = UploadField::create('Image', 'Image');
        $image->setFolderName('slides');

        $fields = FieldList::create(
            TextField::create('Title'), 
            $image, 
            TreeDropdownField::create('LinkID', 'Link', 'SiteTree')
        );
        return $fields;
    }

}

首页.php

class HomePage extends Page {

    private static $has_many = array(
        'Slides' => 'Slide'
    );

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

        $slidesFieldConfig = GridFieldConfig_RecordEditor::create();

        // The following requires the SortableGridField module installed
        $slidesFieldConfig->addComponent(new GridFieldSortableRows('SortOrder'));

        $slidesField = GridField::create(
            'Slides',
            'Slide',
            $this->Slides(),
            $slidesFieldConfig
        );

        $fields->addFieldToTab('Root.Slides', $slidesField);

        return $fields;
    }

}

布局/首页.ss
<% if $Slides %>
    <div class="slideshow">
        <% loop $Slides %>
            <% if $Link %>
                <a class="slide" href="$Link.URL" title="Go to the $Link.Title.XML page">
                    <img src="$Image.URL" alt="$Title" />
                </a>
            <% else %>
                <div class="slide">
                    <img src="$Image.URL" alt="$Title" />
                </div>
            <% end_if %>
        <% end_loop %>
    </div>
<% end_if %>

银条 2.4

使用 DataObjectManager 和 Uploadify 模块:

幻灯片.php

class Slide extends DataObject {

    static $db = array(
        'Title' => 'Text'
    );

    static $has_one = array(
        'HomePage' => 'HomePage', 
        'SlideImage' => 'Image', 
        'Link' => 'SiteTree'
    );
    static $singular_name = 'Slide';
    static $plural_name = 'Slides';

    public function getCMSFields_forPopup()
    {
        return new FieldSet(
            new TextField('Title'),
            new SimpleTreeDropdownField('LinkID', 'Slide Link', 'SiteTree'),
            new ImageUploadField('SlideImage', 'Slide Image')
        );
    }

}

首页.php

class HomePage extends Page {

    public static $has_many = array(
        'Slides' => 'Slide'
    );

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

        $slideManager = new ImageDataObjectManager(
            $this,
            'Slides',
            'Slide',
            'Image', 
            array(
            ),
            'getCMSFields_forPopup'
        );
        $fields->addFieldToTab('Root.Content.Slides', $slideManager);

        return $fields;
    }

}

布局/首页.ss
<% if Slides %>
    <div class="slideshow">
        <% control Slides %>
            <% if Link %>
                <a class="slide" href="$Link.URL" title="Go to the $Link.Title.XML page">
                    <img src="$Image.URL" alt="$Title" />
                </a>
            <% else %>
                <div class="slide">
                    <img src="$Image.URL" alt="$Title" />
                </div>
            <% end_if %>
        <% end_control %>
    </div>
<% end_if %>

关于image - Silverstripe Uploadify 添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432739/

相关文章:

php - Uploadify 不传递变量,Session 问题?

php - 为什么在使用 Uploadify 时一些 POST 数据会丢失?

php - SilverStripe SiteConfig 标题字段操作

javascript - 如何使用 angularjs 缓存图像

javascript - 更改图像 src 而不从 mysql 数据库刷新

css - 防止 Bootstrap 预加载所有 hidden-* 图像

jquery - Uploadify:如何从队列中删除已上传的项目

php - 扩展图像类

silverstripe - 如何将自定义项添加到左侧 CMS 菜单并管理模型和额外字段?类似于 ModelAdmin?

ruby - 使用 Sinatra 上传图片到 Postgres