Работа с View->registerMetaTag

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Работа с View->registerMetaTag

Сообщение SaintRu »

Здравствуйте, как заставить Yii2 добавлять закрывающий слешь в одиночные теги?

Код: Выделить всё

<meta />
<link />
P/S/ Нужно для валидатора html

PP/SS/Не переписывать же базовый класс BaseHtml

Код: Выделить всё

    public static function tag($name, $content = '', $options = [])
    {
        if ($name === null || $name === false) {
            return $content;
        }
        $html = "<$name" . static::renderTagAttributes($options) . '>'; //!!!! -  (isset(static::$voidElements[strtolower($name)]) ? '/>' : '>')
        return isset(static::$voidElements[strtolower($name)]) ? $html : "$html$content</$name>";
    }
Мой старт-ап ;) https://website39.site
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Работа с View->registerMetaTag

Сообщение rak »

можно подменить класс Html и в нем сделать что нужно(в данном случае видимо нужно переопределить voidElements)

Код: Выделить всё

Yii::$classMap['yii\helpers\Html'] = '@app/components/helpers/Html.php';
при этом класс app/components/helpers/Html.php будет выглядеть вот так

Код: Выделить всё

namespace yii\helpers;

class Html extends BaseHtml
{
/**
     * @var array list of void elements (element name => 1)
     * @see http://www.w3.org/TR/html-markup/syntax.html#void-element
     */
    public static $voidElements = [
        'area' => 1,
        'base' => 1,
        'br' => 1,
        'col' => 1,
        'command' => 1,
        'embed' => 1,
        'hr' => 1,
        'img' => 1,
        'input' => 1,
        'keygen' => 1,
       // 'link' => 1,
        //'meta' => 1,
        'param' => 1,
        'source' => 1,
        'track' => 1,
        'wbr' => 1,
    ];
}
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Работа с View->registerMetaTag

Сообщение SaintRu »

rak писал(а): 2021.08.23, 12:45 можно подменить класс Html и в нем сделать что нужно(в данном случае видимо нужно переопределить voidElements)

Код: Выделить всё

Yii::$classMap['yii\helpers\Html'] = '@app/components/helpers/Html.php';
Немного плаваю в структуре Yii2. Где произвести эту подмену? Пользуюсь advanced версией
Мой старт-ап ;) https://website39.site
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Работа с View->registerMetaTag

Сообщение rak »

SaintRu писал(а): 2021.08.31, 17:01
rak писал(а): 2021.08.23, 12:45 можно подменить класс Html и в нем сделать что нужно(в данном случае видимо нужно переопределить voidElements)

Код: Выделить всё

Yii::$classMap['yii\helpers\Html'] = '@app/components/helpers/Html.php';
Немного плаваю в структуре Yii2. Где произвести эту подмену? Пользуюсь advanced версией
например, в конфиге

Код: Выделить всё

 
<?php
Yii::$classMap['yii\helpers\Html'] = '@app/components/helpers/Html.php';

$params = array_merge(
    require __DIR__ . '/../../common/config/params.php',
    require __DIR__ . '/../../common/config/params-local.php',
    require __DIR__ . '/params.php',
    require __DIR__ . '/params-local.php'
);

return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Работа с View->registerMetaTag

Сообщение SaintRu »

rak писал(а): 2021.08.31, 19:14 например, в конфиге

Код: Выделить всё

 
<?php
Yii::$classMap['yii\helpers\Html'] = '@app/components/helpers/Html.php';

$params = array_merge(
    require __DIR__ . '/../../common/config/params.php',
    require __DIR__ . '/../../common/config/params-local.php',
    require __DIR__ . '/params.php',
    require __DIR__ . '/params-local.php'
);

return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
Хм, ругается в конфиге

Код: Выделить всё

Cannot declare class booking\helpers\myHtml, because the name is already in use
Мой старт-ап ;) https://website39.site
Ответить