webentwicklung-frage-antwort-db.com.de

CodeIgniter Flash-Daten

Ich habe Probleme mit Flash Data in CodeIgniter.

Ich möchte grundsätzlich:

hinzufügen einer Kategorie zu einer Datenbank Benutzer auf eine Seite zurückleiten Eine Popup-Meldung anzeigen "Ihre Kategorie wurde erstellt"

Bis jetzt kann ich die Kategorie erfolgreich zur Datenbank hinzufügen und die Benutzereingaben werden korrekt überprüft. Ich weiß nur nicht, wie ich die Popup-Erfolgsmeldung erstellen kann. (Ich möchte keine Erfolgsansicht laden), leiten Sie einfach dorthin zurück, woher sie kamen, und zeigen Sie eine kleine Nachricht in der oberen Ecke oder etwas anderes an.

Sind Flash-Daten der richtige Weg?

13
Tom

In Ihrem Controller:

//add to db
// load session library if not auto-loaded
$this->session->set_flashdata('msg', 'Category added');
redirect('controller/method');

In der Ansicht:

<script>
// assumes you're using jQuery
$(document).ready(function() {
$('.confirm-div').hide();
<?php if($this->session->flashdata('msg')){ ?>
$('.confirm-div').html('<?php echo $this->session->flashdata('msg'); ?>').show();
<?php } ?>
});
</script>
36
Mudshark

Sie können unterschiedliche Sitzungsnachrichten ausführen, je nachdem, was Sie zur Anzeige von Ihrem Controller übergeben. Ich habe bemerkt, dass ich Bootstrap als mein CSS-Backbone verwende.

Im Hinblick auf,

Im Erfolgsfall

<?php if ($this->session->flashdata('category_success')) { ?>
        <div class="alert alert-success"> <?= $this->session->flashdata('category_success') ?> </div>
    <?php } ?>

Für fehlerfall

<?php if ($this->session->flashdata('category_error')) { ?>
    <div class="alert alert-danger"> <?= $this->session->flashdata('category_error') ?> </div>
<?php } ?>

In Controller,

Im Erfolgsfall

$this->session->set_flashdata('category_success', 'Success message.');
redirect("To your view");

Für fehlerfall

$this->session->set_flashdata('category_error', 'Error message.');
redirect("To your view");

Weitere Informationen finden Sie unter: http://www.codeigniter.com/userguide2/libraries/sessions.html

4
William Kheng

Sie können es versuchen -

Regler:

    $this->session->set_flashdata('success', 'Success Message...');

    OR

    $this->session->set_flashdata('error', 'Error Message...');

    OR

    $this->session->set_flashdata('warning', 'Warning Message...');

    OR

    $this->session->set_flashdata('info', 'Info Message...');

Aussicht:

    <?php if($this->session->flashdata('success')){ ?>
        <div class="alert alert-success">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            <strong>Success!</strong> <?php echo $this->session->flashdata('success'); ?>
        </div>

    <?php } else if($this->session->flashdata('error')){  ?>

        <div class="alert alert-danger">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            <strong>Error!</strong> <?php echo $this->session->flashdata('error'); ?>
        </div>

    <?php } else if($this->session->flashdata('warning')){  ?>

        <div class="alert alert-warning">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            <strong>Warning!</strong> <?php echo $this->session->flashdata('warning'); ?>
        </div>

    <?php } else if($this->session->flashdata('info')){  ?>

        <div class="alert alert-info">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            <strong>Info!</strong> <?php echo $this->session->flashdata('info'); ?>
        </div>
    <?php } ?>
1
Walk

mit ternärem Operator:

Flash-Daten einstellen:

$this->session->set_flashdata('insertproduct', 'Product added successfully');
$this->session->set_flashdata('deleteproduct','Delete added successfully');

Verwenden der Flash-Sitzungsdaten:

<?php if($this->session->flashdata('insertproduct')):echo $this->session->flashdata('insert');endif; ?><br/>
<?php if($this->session->flashdata('delete')): echo $this->session->flashdata('delete'); endif;?>
1
saurabh kamble
//Set Flash messages

$this->session->set_flashdata('post_created', 'Your post has been Posted!');
redirect('Posts/index');

//In Posts View you will have

<?php if($this->session->flashdata('post_created')) : ?>
    <?php echo '<p class="alert alert-success"> ' .$this->session->flashdata('post_created'). '</p>'; ?>
<?php endif; ?>
0
erickie007

CodeIgniters Flash-Daten verwendet PHPsession-Variablen. Es wird ein :old in den Sitzungsnamen eingefügt, so dass es nur einen Datenbankaufruf dauert. Es ist sehr zweckmäßig und zweckmäßig, das zu tun, was Sie tun möchten. Ja, es ist eine sehr gute Methode, um diese Art von Dingen zu erledigen.

Denken Sie daran, wenn Sie dies verwenden möchten, müssen Sie $this->session->library('session') einschließen.

Wenn Sie sich nicht sicher sind, wie Sie flash_data verwenden sollen, empfehle ich Ihnen, die zuvor verlinkten Dokumente zu lesen.

$this->session->set_flashdata(
    'category_success', 
    'Your category has been created'
);
redirect(); //location

echo $this->session->flashdata('category_success');
0
Phil

Ja, überprüfen Sie einfach, ob die Flash-Daten verfügbar sind. Wenn ja, zeigen Sie die Nachricht an. Wenn nicht, dann zeigen Sie sie nicht. so einfach ist das.

p.s. Sie sollten immer eine Weiterleitung nach einer POST - Anforderung durchführen.

0
hndr