dynamic/viewable-dataobject 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dynamic/viewable-dataobject

Composer 安装命令:

composer require dynamic/viewable-dataobject

包简介

DataExtension that easily allows a DataObject to be viewed like a Page

README 文档

README

Build Status Scrutinizer Code Quality Code Coverage Build Status codecov

Latest Stable Version Latest Unstable Version Total Downloads License Monthly Downloads Daily Downloads

DataExtension that easily allows a dataobject to be viewed like a Page

Requirements

  • SilverStripe ^4.0

Installation

composer require dynamic/viewable-dataobject

In config.yml:

MyDataObject:
	extensions:
		- Dynamic\ViewableDataObject\Extensions\ViewableDataObject

Example usage

On the DataObject you'd like to view as a page:

<?php
	
use Dynamic\ViewableDataObject\VDOInterfaces\ViewableDataObjectInterface;
	
class MyDataObject extends DataObject implements ViewableDataObjectInterface
{
	public function getParentPage()
	{
		return MyDisplayPage::get()->first();
	}
	
	public function getViewAction()
	{
		return 'myobject';
	}
}

On the Page_Controller you'd like to view your DataObject:

<?php

use SilverStripe\Control\HTTPRequest;
use SilverStripe\View\ArrayData;

class MyDisplayPageController extends \PageController
{
    public function myobject(HTTPRequest $request)
    {
        $urlSegment = $request->latestParam('ID');
	
        if (!$object = MyDataObject::get()->filter('URLSegment', $urlSegment)->first()) {
            return $this->httpError(404, "The object you're looking for doesn't seem to be here.");
        }
	
        return $this->customise(new ArrayData([
            'Object' => $object,
            'Title' => $object->Title,
            'MetaTags' => $object->MetaTags(false),
            'Breadcrumbs' => $object->Breadcrumbs(),
        ]));
    }
} 	

Controller Extension

Adding the controller extension to a class will allow for using custom layout templates.

In config.yml:

MyControler:
	extensions:
		- Dynamic\ViewableDataObject\Extensions\ControllerExtension

Instead of calling render, renderWith, or customize; renderWithLayout can be passed a list of layout templates and extra data.

<?php

use SilverStripe\Control\HTTPRequest;

class MyDisplayPageController extends \PageController
{
    public function myobject(HTTPRequest $request)
    {
        $urlSegment = $request->latestParam('ID');
	
        if (!$object = MyDataObject::get()->filter('URLSegment', $urlSegment)->first()) {
            return $this->httpError(404, "The object you're looking for doesn't seem to be here.");
        }
		
        return $this->renderWithLayout([
            MyDataObject::class,
            MyDisplayPage::class,
        ], [
        	'Object' => $object,
            'Title' => $object->Title,
            'MetaTags' => $object->MetaTags(false),
            'Breadcrumbs' => $object->Breadcrumbs(),
        ]);
    }
} 	

renderWithLayout will add \Page::class to the end of the template list. The first valid template in the array will be used.

统计信息

  • 总下载量: 11.8k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 4
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2017-01-12

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固