Aggiungi il controllo di rifiuto all'output di session-flash () in CakePHP
-
02-07-2019 - |
Domanda
In un'app CakePHP 1.2
, sto usando
<?php $session->flash();?>
per generare messaggi come " Record modificato " ;. Funziona benissimo.
Tuttavia, voglio aggiungere un link chiamato " Ignora " che sbiadirà il messaggio. So come costruire il collegamento, ma non so come inserire nell'output del messaggio flass.
Il messaggio flash si avvolge in un tag DIV
. Voglio inserire il mio codice di rifiuto in quel div, ma non so come.
Soluzione 3
Capito questo: Crea un nuovo layout nella cartella dei layout:
layouts/message.ctp
In quel layout, includi la chiamata per produrre il contenuto:
<?php echo $content_for_layout; ?>
Quindi, quando si imposta il messaggio flash, specificare il layout da utilizzare:
$this->Session->setFlash('Your record has been created! Wicked!','message');
Altri suggerimenti
Desideri utilizzare la funzione setflash . Se si passa a setflash una stringa vuota per $ default non avvolgerà il messaggio in un div e lo memorizzerà così com'è. In questo modo è possibile visualizzare qualsiasi markup desiderato o, come pubblicato da Justin, è possibile utilizzare un'altra pagina di visualizzazione per il messaggio in modo da non mescolare visualizzazione e controller.
Puoi farlo con jQuery:
$(document).ready(function() {
$("#flashMessage").each(function() {
$close = $("<span class='close'>Close</span>");
$close.click(function () {
$(this).parent().hide("slow");
});
$(this).append($close);
});
});
Dovrai risolverlo con un po 'di CSS, ma sono sicuro che avrai l'idea.
il modo predefinito di fare è creare un flash.ctp in / app / views / layout. Questo sovrascriverà il flash.ctp predefinito che puoi trovare in / cake / libs / view / layouts. Quindi non è necessario utilizzare il parametro aggiuntivo.
btw: funziona con tutte le viste e i layout standard di CakePHP.