https://github.com/dynamic/viewable-dataobject
DataExtension that easily allows a DataObject to be viewed like a Page
https://github.com/dynamic/viewable-dataobject
Last synced: 6 months ago
JSON representation
DataExtension that easily allows a DataObject to be viewed like a Page
- Host: GitHub
- URL: https://github.com/dynamic/viewable-dataobject
- Owner: dynamic
- License: bsd-3-clause
- Created: 2017-01-12T17:10:33.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-05-24T21:19:34.000Z (about 4 years ago)
- Last Synced: 2024-08-09T22:13:10.421Z (11 months ago)
- Language: PHP
- Size: 33.2 KB
- Stars: 3
- Watchers: 6
- Forks: 9
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# SilverStripe Viewable Dataobject
[](https://travis-ci.org/dynamic/viewable-dataobject)
[](https://scrutinizer-ci.com/g/dynamic/viewable-dataobject/?branch=master)
[](https://scrutinizer-ci.com/g/dynamic/viewable-dataobject/?branch=master)
[](https://scrutinizer-ci.com/g/dynamic/viewable-dataobject/build-status/master)
[](https://codecov.io/gh/dynamic/viewable-dataobject)[](https://packagist.org/packages/dynamic/viewable-dataobject)
[](//packagist.org/packages/dynamic/viewable-dataobject)
[](https://packagist.org/packages/dynamic/viewable-dataobject)
[](https://packagist.org/packages/dynamic/viewable-dataobject)
[](https://packagist.org/packages/dynamic/viewable-dataobject)
[](https://packagist.org/packages/dynamic/viewable-dataobject)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:
```yml
MyDataObject:
extensions:
- Dynamic\ViewableDataObject\Extensions\ViewableDataObject
```## Example usage
On the DataObject you'd like to view as a page:
```php
first();
}
public function getViewAction()
{
return 'myobject';
}
}
```On the Page_Controller you'd like to view your DataObject:
```php
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:
```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
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.