contao-community-alliance/events-create-options
Composer 安装命令:
composer require contao-community-alliance/events-create-options
包简介
options_callback event and helpers for Contao Open Source CMS
README 文档
README
Event and helper classes to provide option_callback's via events.
In your DCA, define the options_callback with the factory class CreateOptionsEventCallbackFactory.
use ContaoCommunityAlliance\Contao\Events\CreateOptions\CreateOptionsEventCallbackFactory; $GLOBALS['TL_DCA']['tl_foo']['fields']['some_select'] = array( 'inputType' => 'select', ... 'options_callback' => CreateOptionsEventCallbackFactory::createCallback('tl_foo.some_select.create-options'), );
Now you can fill the options with an event listener, listening on the event named tl_foo.some_select.create-options.
$GLOBALS['TL_EVENTS']['tl_foo.some_select.create-options'][] = function($event) { $options = $event->getOptions(); $options['value1'] = 'label 1'; $options['value2'] = 'label 2'; $options['value3'] = 'label 3'; };
Manipulate the options with a second event listener is pretty easy.
$GLOBALS['TL_EVENTS']['tl_foo.some_select.create-options'][] = array( function($event) { $options = $event->getOptions(); // remove a default value unset($options['value2']); // add a new value $options['value4'] = 'label 4'; }, -10 // we need a lower priority here, to make sure this listener is triggered after the default listener );
See the event dispatcher documentation for more examples how to listen on an event.
Custom event
By default, an event of type ContaoCommunityAlliance\Contao\Events\CreateOptions\CreateOptionsEvent is used.
If you want your own event type, you can pass the class or a factory method as second parameter to CreateOptionsEventCallbackFactory::createCallback().
First you need to write your own create-options event class.
class MyCreateOptionsEvent extends \ContaoCommunityAlliance\Contao\Events\CreateOptions\CreateOptionsEvent { protected $additionalData; function __construct($additionalData, \DataContainer $dataContainer, \ArrayObject $options = null) { parent::__construct($dataContainer, $options); $this->additionalData = $additionalData; } public function getAdditionalData() { return $this->additionalData; } }
Then you need to add your factory to CreateOptionsEventCallbackFactory::createCallback().
use ContaoCommunityAlliance\Contao\Events\CreateOptions\CreateOptionsEventCallbackFactory; $GLOBALS['TL_DCA']['tl_foo']['fields']['some_select'] = array( 'inputType' => 'select', ... 'options_callback' => CreateOptionsEventCallbackFactory::createCallback( 'tl_foo.some_select.create-options', function($dataContainer) { return new \MyCreateOptionsEvent(array('some' => 'value'), $dc); } ), );
统计信息
- 总下载量: 3.15k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 29
- 推荐数: 0
其他信息
- 授权协议: LGPL-3.0-or-later
- 更新时间: 2014-02-06