Необязательный параметр jBBCode?

я использую jBBCode для разбора кодов bb.

Я хочу расширить класс CodeDefinition, чтобы написать свой собственный asHtml функционировать как в примере в документация.

MyTag (см. фрагмент кода) может иметь опцию, а может и не иметь. И если нет никого, я хочу, чтобы это стало значением по умолчанию.

Но я должен сделать setUseOption () сказать jBBCode, требует ли мой тег опцию или нет. Это может быть только правдой или ложью.

Если я установлю правда, затем [mytag]without option[/mytag] не удается продолжить.

Если я установлю ложный, [mytag=value]with option[/mytag] выходит из строя.

Есть ли способ разрешить использование тегов как с опцией, так и без нее? То есть сделать опцию необязательной.
И установить для него значение по умолчанию?

Я не нашел этого в документация.

Фрагмент кода:

<?php

class MyTag extends JBBCode\CodeDefinition {

public function __construct()
{
parent::__construct();
$this->setTagName("mytag");
$this->setUseOption(true);
}
...

0

Решение

Взгляните на определения для bb-кодов url и img по умолчанию в DefaultCodeDefinitionSet.php. Они предоставляют необязательные аргументы, дважды определяя bbcode:

/* [url] link tag */
$builder = new CodeDefinitionBuilder('url', '<a href="{param}">{param}</a>');
$builder->setParseContent(false)->setBodyValidator($urlValidator);
array_push($this->definitions, $builder->build());

/* [url=http://example.com] link tag */
$builder = new CodeDefinitionBuilder('url', '<a href="{option}">{param}</a>');
$builder->setUseOption(true)->setParseContent(true)->setOptionValidator($urlValidator);
array_push($this->definitions, $builder->build());

Затем анализатор позаботится о сопоставлении экземпляров bbcode с соответствующим определением.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector