我已将 SesionHelper 从核心复制到 myapp/View/Helper 中,因此我可以更改输出消息周围的 div 结构。
我的问题是我似乎无法从默认的 cakephp 消息中检测到该消息是错误消息还是成功消息。我知道我可以在我的控制器中设置一个 Flash 消息并添加一个属性。但是我似乎没有从核心消息中看到任何额外的数据。
例如,如果数据保存到数据库中,我希望将消息显示为绿色。或者如果数据无法保存,则显示为红色消息。
public function flash($key = 'flash', $attrs = array()) {
$out = false;
if (CakeSession::check('Message.' . $key)) {
$flash = CakeSession::read('Message.' . $key);
$message = $flash['message'];
unset($flash['message']);
if (!empty($attrs)) {
$flash = array_merge($flash, $attrs);
}
if ($flash['element'] === 'default') {
$class = 'message';
if (!empty($flash['params']['class'])) {
$class = $flash['params']['class'];
}
$out = '<div id="' . $key . 'Message" class="' . $class . '">' . $message . '</div>';
} elseif (!$flash['element']) {
$out = $message;
} else {
$options = array();
if (isset($flash['params']['plugin'])) {
$options['plugin'] = $flash['params']['plugin'];
}
$tmpVars = $flash['params'];
$tmpVars['message'] = $message;
$out = $this->_View->element($flash['element'], $tmpVars, $options);
}
CakeSession::delete('Message.' . $key);
}
return $out;
}