Author: Andrew Mc Cormack
Provides a has_one Link object with the following options:
- Anchor link
- Internal Link
- External Link
- Telephone
- File
- Image
- Link target (_blank etc)
Add the following to your composer.json file and run /dev/buid?flush=all
{
"require": {
"cyber-duck/silverstripe-linkitemfield": "4.1.*"
}
}
The field references a has_one LinkItem relation on a DataObject. Make sure to include both the field and object namespaces in your class.
use CyberDuck\LinkItemField\Forms\LinkItemField;
use CyberDuck\LinkItemField\Model\LinkItem;
use SilverStripe\ORM\DataObject;
class MyObject extends DataObject
{
private static has_one = [
'MyRelation' => LinkItem::class
];
}
The field can easily be added to an DataObject / extension through getCMSFields() / updateCMSFields() or similar.
$fields->addFieldToTab('Root.Main', LinkItemField::create('MyRelationID', 'My Relation Title'));
The relation will expose 3 properties in your template - Link, Title, and Target.
<% with MyRelation %>
<a href="$Link" target="$Target">$Title</a>
<% end_with %>
When calling Link the outputted URL will be formatted depending on the Link type
<a href="#{TheURL}">For Anchor</a>
<a href="{TheURL}">For Internal</a>
<a href="{TheURL}">For External</a>
<a href="mailto:{TheURL}">For Email</a>
<a href="tel:+{TheURL}">For Telephone</a>
<a href="{TheURL}">For File</a>
<a href="{TheURL}">For Image</a>
- Add React