我正在尝试重构我的代码,并且当前在我的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没有传递任何内容。要么我完全错过了一个令人眼花缭乱的错误,要么我试图做的不是一个小部件。
任何人都可以帮忙???