cyber-duck / silverstripe-linkitemfield
SilverStripe 4 custom form element for anchor, email, telephone, file, image, internal and external links
Installs: 38 627
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 5
Forks: 12
Type:silverstripe-vendormodule
Requires
This package is auto-updated.
Last update: 2024-12-26 16:30:30 UTC
README
Author: Andrew Mc Cormack
Features
Provides a has_one Link object with the following options:
- Anchor link
- Internal Link
- External Link
- Telephone
- File
- Image
- Link target (_blank etc)
Screen Shots
Installation
Add the following to your composer.json file and run /dev/buid?flush=all
{ "require": { "cyber-duck/silverstripe-linkitemfield": "4.1.*" } }
Setup
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>
Todo
- Add React