Идея
Написать некий класс-обертку для пользовательских оповещений.
Зачем?
Ну, собственно, сообщать пользователю какую-либо информацию.
Пример
Код: Выделить всё
/**
* Tu dum, tu dum, tu dum tu dum tu dum tu dum tu duuuuuuum tu tu tu dum
* @return string
*/
public function actionIndex(): string
{
Alert::success('Все пошло как надо, съешьте немного шоколада');
}
Собственно, сделал AlertWidget (не спрашивайте: "зачем?")
Код: Выделить всё
<?php
namespace app\widgets;
/**
* Class AlertWidget
* @package app\widgets
*/
class AlertWidget extends Widget
{
/** @var string */
public $message;
/** @var string */
public $className;
/**
* @param string $message
* @return string
* @throws \Exception
*/
public static function success(string $message): string
{
return static::widget([
'className' => 'success',
'message' => $message
]);
}
/**
* @param string $message
* @return string
* @throws \Exception
*/
public static function fail(string $message): string
{
return static::widget([
'className' => 'danger',
'message' => $message
]);
}
/**
* @param string $message
* @return string
* @throws \Exception
*/
public static function warning(string $message): string
{
return static::widget([
'className' => 'warning',
'message' => $message
]);
}
/**
* @param string $message
* @return string
* @throws \Exception
*/
public static function info(string $message): string
{
return static::widget([
'className' => 'info',
'message' => $message
]);
}
/**
* @param array $messages
* @return void
*/
public static function viewMessages(array $messages = []): void
{
foreach ($messages as $message) {
print $message;
}
}
/**
* @return string
*/
public function run(): string
{
return $this->render('alert', [
'class' => $this->className,
'message' => $this->message
]);
}
}
Код: Выделить всё
<?php
namespace app\helpers;
use app\widgets\AlertWidget;
use Yii;
/**
* Class Alert
* @package app\helpers
*/
class Alert
{
/**
* @param string $message
* @throws \Exception
* @return void
*/
public static function addErrorMessage(string $message): void
{
$message = AlertWidget::fail($message);
static::addMessage($message);
}
/**
* @param string $message
* @throws \Exception
* * @return void
*/
public static function addSuccessMessage(string $message): void
{
$message = AlertWidget::success($message);
static::addMessage($message);
}
/**
* @param string $message
* @throws \Exception
* * @return void
*/
public static function addWarningMessage(string $message): void
{
$message = AlertWidget::warning($message);
static::addMessage($message);
}
/**
* @param string $message
* @throws \Exception
* * @return void
*/
public static function addInfoMessage(string $message): void
{
$message = AlertWidget::info($message);
static::addMessage($message);
}
/**
* @param string $message
* * @return void
*/
public static function addMessage(string $message): void
{
Yii::$app->getSession()->addFlash('messages', $message);
}
}
5-ая точка подсказывает мне, что что-то тут не так есть у кого какие идеи?