无法将参数传递给Yii小部件

时间:2016-10-17 12:05:19

标签: php yii

我正在尝试重构我的代码,并且当前在我的component->控制器中有一个函数来发送松弛通知。但是我想扩展通知,所以我没有通过参数传递多个函数,而是将所有通知放入控件中调用的小部件中。

我已将目前所需的一切编译成一个小部件,但每当我尝试运行它时,我都会收到错误

Undefined variable: type

当项目被操作时,我的控制器中会调用我的小部件

$this->widget('application.components.DMNotifications', array(
                    'type' => 'slack',
                    'slack_content' => 'event_close',
                ));

这是我的组件小部件

<?php

class DMNotifications extends CWidget {

public $type = '';
    public $sendPermission = 0;
    //slack vars
    public $slack_content = null;
    public $newCompany = null;
    public $company = null;
    public $fullname = null;
    public $newInstance = null;

    public static $SLACK_REGISTRATION = "registration";
    public static $SLACK_EVENTPUBLISH = "event_publish";
    public static $SLACK_EVENTCLOSE = "event_close";
    public static $SLACK_EVENTCAPACITYTRIP = "event_capacity_trip";
    public static $SLACK_EMAILNOTIFICATIONS = "email_notifications";

    public function init() {
        if ($type === 1){
            $this->slack();
        }
        parent::init();
}

public function run() {
}

    public function slack(){

$sendPermission = ( Options::model()->isSlackWebhookOptDelegateReg() ? 1 : 0 );


$text = "You have a new message on the " . Options::model()->getSiteName();



        $url = Options::getSlackWebhookUrl();
        $json_data = json_encode(array(
                "text" => $text,
                "username" => "XX",
                "icon_url" => "xx.png",
                "channel" => Options::getSlackWebhookChannel()
        ));
        $post_data['payload'] = $json_data;
        if ($sendPermission === 1){
                $output = Yii::app()->curl->post($url, $post_data);
        }
    }

}

如果我注释掉类型错误,我会得到一个不同的错误,因为params没有传递任何内容。要么我完全错过了一个令人眼花缭乱的错误,要么我试图做的不是一个小部件。

任何人都可以帮忙???

0 个答案:

没有答案