如何在Cake 3中为Flash消息提供自定义css类

时间:2016-05-06 12:10:05

标签: cakephp flash-message

我想在Cakephp 3中给Flash消息一个自定义的css类,我的(在这种情况下是编辑)控制器中有我的函数:

public function edit($id = null)
{
    $this->viewBuilder()->layout('personalizado');
    $user = $this->Users->get($id, [
        'contain' => []
    ]);
    if ($this->request->is(['patch', 'post', 'put'])) {
        $user = $this->Users->patchEntity($user, $this->request->data);
        if ($this->Users->save($user)) {
            $this->Flash->success('Utilizador editado com sucesso.', 'default', ['class' => 'alert alert-success']);
            return $this->redirect(['action' => 'index']);
        } else {
            $this->Flash->error(__('Erro ao apagar utilizador, por favor tente de novo.'));
        }
    }
    $this->set(compact('user'));
    $this->set('_serialize', ['user']);
}

我在这一行添加了自定义css claas:

$this->Flash->success('Utilizador editado com sucesso.', 'default', ['class' => 'alert alert-success']);

但是没有工作,提前谢谢。

4 个答案:

答案 0 :(得分:2)

它不起作用,因为它不是应该如何工作的。不要只是投入一些东西并希望最好,请先阅读文档,弄清楚要做些什么!

根本没有class选项。

<强> Cookbook > Controllers > Components > Flash > Setting Flash Messages

如果要为成功Flash消息设置特定类,则必须修改src/Template/Element/Flash/success.ctp中的flash消息元素,类似于链接文档中所示。

如果要在控制器级别定义内容,可以使用params选项传递自定义选项并在元素中使用它们。

答案 1 :(得分:2)

// In your Controller
$this->Flash->success('The user has been saved', [
    'params' => [
        'class' => 'alert alert-success'
    ]
]);

// In your View
<?= $this->Flash->render() ?>

<!-- In src/Template/Element/Flash/success.ctp -->
<div class="<?= h($params['class']) ?>">
    <?= h($message) ?>
</div>

答案 2 :(得分:0)

我想你想要使用boostrap类加载警告

如果自定义成功的Flash消息,您应该转到 src / Template / Flash / success.ctp

并添加您的课程

<div class="alert alert-success" onclick="this.classList.add('hidden')">
  <strong><?= __('Success') ?>!</strong> <?= h($message) ?>
</div>

答案 3 :(得分:0)

这个适用于我。

转到 src / Template / Element /
创建名为“ Flash ”的目录文件
success.ctp error.ctp 模板放在该目录文件中。
因此,您在目录 src / Template / Element / Flash /

中有2个名为 success.ctp error.ctp 的文件

将此脚本放入 src / Template / Element / Flash / success.ctp

<div class="alert alert-success alert-dismissable" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    <?= strip_tags($message, '<br>') ?>
</div>

另外,将此脚本放在 src / Template / Element / Flash / error.ctp

<div class="alert alert-danger alert-dismissable" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    <?= strip_tags($message, '<br>') ?>
</div>

然后,在控制器

中添加此Flash脚本功能
$this->Flash->error(__("Your error message"));
return $this->redirect(['action' => 'index']);

您的错误消息或此消息

$this->Flash->success(__("Your successed message"));
return $this->redirect(['action' => 'index']);

获取成功的即时消息。
然后,在 view.ctp 中添加此脚本

<?= $this->Flash->render() ?>

不要忘记先在AppController.php中加载FlashComponent。

更多细节设置位于this页面。看看吧。