2015-04-28 2 views
3

Я хочу расширить класс yii \ web \ Response. Поэтому я создал новый класс Response в папке компонентов, и я пытаюсь перезаписать метод отправки.Yii 2.0 Расширение базовых классов

namespace app\components; 

use Yii; 

class Response extends \yii\web\Response{ 

    public function init(){ 
     parent::init(); 
    } 

    /** 
    * Sends the response to the client. 
    */ 
    public function send() 
    { ... 

Наконец, я попытался импортировать свой новый класс ответов, импортировав его в конфиг.

$config = [ 
    'id' => 'basic', 
    'basePath' => dirname(__DIR__), 
    'bootstrap' => ['log'], 
    'components' => [ 
     'import' => [ 
      'class' => 'app\components\Response',  
     ], 

Почему это не будет работать так?

ответ

5

Попробуйте так:

'components' => [ 
    'response' => [ 
     'class' => 'app\components\Response', 
    ], 
+0

хорошая идея, но это только переопределяет свойства при (Yii :: $ приложение) не основные классы – Shqear

+1

Правда, не пробовал, но, возможно, что работает при установке его с помощью controllerMap http://www.yiiframework.com/doc-2.0/yii-base-module.html#$controllerMap-detail – jagsler

+0

@Shqear - его ответ отменяет основной класс! Вы говорите ему использовать '\ app \ components \ Response' вместо' \ yii \ web \ Response'. Миссия выполнена согласно вашему Вопросу. Если есть что-то, о чем это не позаботилось, пожалуйста, обновите свой вопрос. В своем комментарии вы сказали «не основные классы». '\ yii \ web \ Response' является основным классом, так что еще вам нужно? Doc on Response: http://www.yiiframework.com/doc-2.0/yii-web-response.html - Источник ответа: https://github.com/yiisoft/yii2/blob/master/framework/web/Response .php –

Смежные вопросы