You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							75 lines
						
					
					
						
							2.3 KiB
						
					
					
				<?php | 
						|
namespace common\widgets; | 
						|
 | 
						|
use Yii; | 
						|
use yii\bootstrap\Widget; | 
						|
 | 
						|
/** | 
						|
 * Alert widget renders a message from session flash. All flash messages are displayed | 
						|
 * in the sequence they were assigned using setFlash. You can set message as following: | 
						|
 * | 
						|
 * ```php | 
						|
 * Yii::$app->session->setFlash('error', 'This is the message'); | 
						|
 * Yii::$app->session->setFlash('success', 'This is the message'); | 
						|
 * Yii::$app->session->setFlash('info', 'This is the message'); | 
						|
 * ``` | 
						|
 * | 
						|
 * Multiple messages could be set as follows: | 
						|
 * | 
						|
 * ```php | 
						|
 * Yii::$app->session->setFlash('error', ['Error 1', 'Error 2']); | 
						|
 * ``` | 
						|
 * | 
						|
 * @author Kartik Visweswaran <kartikv2@gmail.com> | 
						|
 * @author Alexander Makarov <sam@rmcreative.ru> | 
						|
 */ | 
						|
class Alert extends Widget | 
						|
{ | 
						|
    /** | 
						|
     * @var array the alert types configuration for the flash messages. | 
						|
     * This array is setup as $key => $value, where: | 
						|
     * - key: the name of the session flash variable | 
						|
     * - value: the bootstrap alert type (i.e. danger, success, info, warning) | 
						|
     */ | 
						|
    public array $alertTypes = [ | 
						|
        'error'   => 'alert-danger', | 
						|
        'danger'  => 'alert-danger', | 
						|
        'success' => 'alert-success', | 
						|
        'info'    => 'alert-info', | 
						|
        'warning' => 'alert-warning' | 
						|
    ]; | 
						|
    /** | 
						|
     * @var array the options for rendering the close button tag. | 
						|
     * Array will be passed to [[\yii\bootstrap\Alert::closeButton]]. | 
						|
     */ | 
						|
    public array $closeButton = []; | 
						|
 | 
						|
    /** | 
						|
     * {@inheritdoc} | 
						|
     */ | 
						|
    public function run() | 
						|
    { | 
						|
        $session = Yii::$app->session; | 
						|
        $flashes = $session->getAllFlashes(); | 
						|
        $appendClass = isset($this->options['class']) ? ' ' . $this->options['class'] : ''; | 
						|
 | 
						|
        foreach ($flashes as $type => $flash) { | 
						|
            if (!isset($this->alertTypes[$type])) { | 
						|
                continue; | 
						|
            } | 
						|
 | 
						|
            foreach ((array) $flash as $i => $message) { | 
						|
                echo \yii\bootstrap\Alert::widget([ | 
						|
                    'body' => $message, | 
						|
                    'closeButton' => $this->closeButton, | 
						|
                    'options' => array_merge($this->options, [ | 
						|
                        'id' => $this->getId() . '-' . $type . '-' . $i, | 
						|
                        'class' => $this->alertTypes[$type] . $appendClass, | 
						|
                    ]), | 
						|
                ]); | 
						|
            } | 
						|
 | 
						|
            $session->removeFlash($type); | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |