Я создал новый XmlResponseFormatter
, и теперь я хочу изменить rootTag
.Yii2 отсутствует требуемый параметр в конструкторе
class newXmlResponseFormatter extends XmlResponseFormatter
{
/**
* @var string the name of the root element.
*
*/
public $rootTag;
public function __construct($rootTag) {
parent::__construct();
$this->rootTag = $rootTag;
}
}
От контроллера я установил, что значение:
$xmlFormater = new newXmlResponseFormatter('newRootTag');
В контроллере, что значение доступно, и устанавливает в $ rootTag но бросали следующее исключение:
исключение 'yii \ base \ InvalidConfigException' с сообщением «Отсутствует обязательный параметр« rootTag »при создании экземпляра« app \ components \ override \ newXmlResponseFormatter ». ' в /var/www/html/Admin/vendor/yiisoft/yii2/di/Container.php:451
Кто-нибудь знает, что может быть проблема? Спасибо заранее!
Я сделал это, как вы сказали: 'code' класс newXmlResponseFormatter расширяет XmlResponseFormatter { /** * @var строка на имя корневой элемент. * */ public $ rootTag; public function __construct ($ rootTag, $ config = []) { parent :: init(); $ this-> rootTag = $ rootTag; parent :: __ construct ($ config); } } 'code' Контроллер: ' code' $ xmlFormater = новый newXmlResponseFormatter ('newRootTag', []); 'code' Но я до сих пор та же ошибка, исключение ... – Lackeeee
родитель' init' следует вызывать ** после ** конструктора в отдельной функции 'init'. Удалите его из конструктора, и он будет работать :) –
Тем не менее не работает :( 'code' общественная функция __construct ($ rootTag, $ конфиг = []) { $ this-> rootTag = $ rootTag; родитель :: __ конструкт ($ конфигурации); } общественная функция инициализации() { родитель :: Init(); } 'code' – Lackeeee