Message.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /*
  3. * FecShop file.
  4. *
  5. * @link http://www.fecshop.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecshop.com/license/
  8. */
  9. namespace fecshop\services\page;
  10. use fecshop\services\Service;
  11. use Yii;
  12. /**
  13. * page message services.
  14. * @author Terry Zhao <2358269014@qq.com>
  15. * @since 1.0
  16. */
  17. class Message extends Service
  18. {
  19. protected $_correctName = 'correct_message';
  20. protected $_errorName = 'error_message';
  21. /**
  22. * @param $message | String
  23. * 增加 correct message. 添加一些操作成功的提示信息,譬如产品加入购物车成功
  24. */
  25. protected function actionAddCorrect($message)
  26. {
  27. if (empty($message)) {
  28. return;
  29. }
  30. if (is_string($message)) {
  31. $message = [$message];
  32. }
  33. $correct = $this->getCorrects();
  34. if (is_array($correct) && is_array($message)) {
  35. $message = array_merge($correct, $message);
  36. }
  37. return Yii::$service->session->setFlash($this->_correctName, $message);
  38. }
  39. /**
  40. * @param $message | String
  41. * 增加 error message.
  42. */
  43. protected function actionAddError($message)
  44. {
  45. if (empty($message)) {
  46. return;
  47. }
  48. if (is_string($message)) {
  49. $message = [$message];
  50. }
  51. $error = $this->getErrors();
  52. if (is_array($error) && is_array($message)) {
  53. $message = array_merge($error, $message);
  54. }
  55. if (is_array($message)) {
  56. $message = implode(',', $message);
  57. }
  58. return Yii::$service->session->setFlash($this->_errorName, $message);
  59. }
  60. /**
  61. * 对于Yii2 service的错误信息都是放到Yii::$service->helper->errors中
  62. * 该函数的作用为,从 Yii::$service->helper->errors 获取报错信息,然后把
  63. * errors信息添加到Yii::$service->page->message中的errors里面,
  64. * Yii::$service->page->message是要在前台页面显示的。
  65. * 而 Yii::$service->helper->errors 不会在前台显示,只是记录Yii Service执行过程中的报错信息。
  66. */
  67. protected function actionAddByHelperErrors()
  68. {
  69. $errors = Yii::$service->helper->errors->get();
  70. //var_dump($errors);
  71. if ($errors) {
  72. if (is_array($errors) && !empty($errors)) {
  73. foreach ($errors as $error) {
  74. Yii::$service->page->message->addError($error);
  75. }
  76. }
  77. return true;
  78. }
  79. }
  80. /**
  81. * 获取 correct message.
  82. * @return array
  83. */
  84. protected function actionGetCorrects()
  85. {
  86. $corrects = Yii::$service->session->getFlash($this->_correctName);
  87. if ($corrects && !is_array($corrects)) {
  88. return [$corrects];
  89. } else {
  90. return $corrects;
  91. }
  92. }
  93. /**
  94. * 获取 error message.
  95. * @return array
  96. */
  97. protected function actionGetErrors()
  98. {
  99. $errors = Yii::$service->session->getFlash($this->_errorName);
  100. if ($errors && !is_array($errors)) {
  101. return [$errors];
  102. } else {
  103. return $errors;
  104. }
  105. }
  106. }