Более удобный вариант registerScript

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Snorway
Сообщения: 2
Зарегистрирован: 2016.06.24, 08:31

Более удобный вариант registerScript

Сообщение Snorway »

Практикую добавление небольших скриптов во вьюхи приложения через

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

Yii::app()->getClientScript()->registerScript('id', $heredocVar, CClientScript::POS_READY);
Для удобства делаю всё не в одном таком блоке, а в нескольких. Так вот, после второго блока с идентичным 'id', новый блок затирает старый (который был добавлен ранее). Во второй версии фреймворка указание id первым аргументом убрали. В первой оно есть и оно немного раздражает. Пофиксил отнаследовавшись от CClientScript (в блоке ниже добавлен комментарий):

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

public function registerScript($id,$script,$position=null,array $htmlOptions=array())
    {
        if($position===null)
            $position=$this->defaultScriptPosition;
        $this->hasScripts=true;
        if(empty($htmlOptions))
            $scriptValue=$script;
        else
        {
            if($position==self::POS_LOAD || $position==self::POS_READY)
                throw new CException(Yii::t('yii','Script HTML options are not allowed for "CClientScript::POS_LOAD" and "CClientScript::POS_READY".'));
            $scriptValue=$htmlOptions;
            $scriptValue['content']=$script;
        }
        $this->scripts[$position][]=$scriptValue; // было: $this->scripts[$position][$id]=$scriptValue;
        if($position===self::POS_READY || $position===self::POS_LOAD)
            $this->registerCoreScript('jquery');
        $params=func_get_args();
        $this->recordCachingAction('clientScript','registerScript',$params);
        return $this;
    }
1. Насколько критична практика добавления небольших скриптов во вью (указанным мной способом)?
2. Чем чревата конкретно моя правка? Пока все работает без проблем.
Ответить