蛋糕3中如何给Flash消息自定义cssclass

How to give Flash message a custom css class in cake 3

我想在 Cakephp 3 中为 Flash 消息提供自定义 css class,在我的(在本例中为编辑)控制器中有我的功能:

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 类:

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

但无法正常工作,在此先感谢。

它不起作用,因为它不应该这样工作。不要只是乱扔东西并抱有最好的希望,请先阅读文档以弄清楚事情是如何完成的!

根本就没有class选项。

Cookbook > Controllers > Components > Flash > Setting Flash Messages

如果您想为成功的闪现消息设置一个特定的 class,那么您必须修改 src/Template/Element/Flash/success.ctp 中的闪现消息元素,类似于链接文档中所示。

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

// 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>

我想你想用引导程序加载警报 class

如果定制成功闪现消息你应该去src/Template/Flash/success.ctp

并添加您的 classes

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

这个适合我。

转到src/Template/Element/
创建名为“Flash”的目录文件
success.ctperror.ctp 模板放入该目录文件中。
因此,目录 src/Template/Element/ 中有 2 个名为 success.ctperror.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>

接下来,在您的 Controller

中添加此 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页面。看看吧。