Files
dph-tycg-event/app/Fields/IframeField.php

40 lines
1.4 KiB
PHP

<?php
namespace App\Fields;
use Backpack\CRUD\app\Library\CrudPanel\CrudField;
use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade;
class IframeField
{
/**
* Create an iframe custom field.
*
* @param string $name Field name (not used for display, only for form data)
* @param string $label Field label
* @param array $options Additional options (url, width, height, extra_attributes, hint)
* @return CrudField
*/
public static function make(string $name, string $label, array $options = [])
{
$url = isset($options['url']) && is_callable($options['url'])
? $options['url'](CrudPanelFacade::getFacadeRoot())
: ($options['url'] ?? null);
$imageRotation90Url = str_replace('/storage/', '/storage/image-rotation90/', $url);
$field = [
'name' => $name,
'label' => $label,
'type' => 'iframe',
'url' => $url, // URL to display in iframe
'image-rotation-url' => $imageRotation90Url,
'width' => $options['width'] ?? '', // Iframe width
'height' => $options['height'] ?? '', // Iframe height
'extra_attributes' => $options['extra_attributes'] ?? [], // Additional iframe attributes
'hint' => $options['hint'] ?? null, // Help text
];
return \Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade::field($field);
}
}