Create a simple Silverstripe Module
Create a simple custom PageType that holds Addresses as DataObjects.
Table of Contents
Three Files only
- Adress.php
- Addressage.php
- AddressPage.ss
Lets start!
1. Custom Dataobject
Let's assume we want to have an Address Database
ToDo: Sorry this is a draft.
2. Custom Page Type
A custom Page Type can automatically be choosen in the Admin via "Add New".
namespace {
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
class AddressPage extends Page
{
// Datenbankfelder
private static $db = [
];
private static $defaults = [
];
private static $has_one = [];
// This Page has multiple Address-DataObjects, accessible under the Name "Adresses"
private static $has_many = [
'Adresses' => 'Address'
];
// Edit-Felder im Backend
public function getCMSFields() {
$fields = parent::getCMSFields(); // Alle Felder des Mutter-Pagetyps inkludieren
// Spezielles GridField zur Admin Oberfläche hinzufügen
$fields->addFieldToTab('Root.Adressen', GridField::create(
'Adressen',
'Adress-DFatenbank',
$this->Adresses(),
GridFieldConfig_RecordEditor::create()
));
return $fields;
}
}
3. Template it
This is connected trough simple Naming Convention.
If your custom PageType is AddressPage, the Template for it has to be named AddressPage.ss
Create Template AddressPage.ss inside templates....
<div id="AddressDatabase">
<% loop Adresses %>
$Name
$Street
$Country
<% end_loop%>
</div>