2016-05-12 4 views
0

Ich habe zwei Seiten mit jeweils 3 Registerkarten. Eine Seite zum Anzeigen und eine weitere zum Bearbeiten.Erhalten Sie aktive Registerkarte ID von Bootstrap und übergeben Sie es an PHP

Wenn ich auf die Registerkarte 2 von der Ansichtsseite klicke und auf die Schaltfläche Bearbeiten klicke, möchte ich auf die Registerkarte 2 auf der Seite Bearbeiten umgeleitet werden. In ähnlicher Weise auch für andere Tabs. Tab 1 von Ansicht bringt mich zu Tab 1 in Bearbeiten und Tab 3 von Ansicht bringt mich zu Tab 3 in Bearbeiten.

Also, was ich tun möchte, ist die aktive Registerkarte von den 3 Tabs, holen Sie den href-Wert, speichern Sie den Wert so, dass ich es als PHP-Variable (oder anders) auf der gleichen Seite verwenden kann Übergeben Sie es an den Button Link, um richtig umzuleiten.

Ich benutze Bootstrap und Codeigniter.

Um die href von der aktiven Registerkarte abzurufen; Ich fand dies:

$('.nav-tabs .active > a').attr('href') 

Das gibt mir den betroffenen href Namen wie tab1, tab2, tab3:

<li class="active"><a href="#tab1" data-toggle="tab">Tab 1</a></li> 
<li><a href="#tab2" data-toggle="tab">Tab 2</a></li> 
<li><a href="#tab3" data-toggle="tab">Tab 3</a></li> 

Ich habe eine Linie in meinem PHP-Code wie:

<a href="<?= site_url('backend/edit/'. $uid . '<GET THE ACTIVE TAB HREF VALUE HERE>') ?>">Edit</a> 

Wie erreiche ich das?

+0

I zugewiesen haben dieses $ (‘. Nav-tabs .active> a '). attr (' href ') zu einer Variablen, aber keine Ahnung, wie darüber hinaus zu gehen. Ich bin mir auch nicht sicher, ob dieser Ansatz richtig ist. – trollster

+0

Sie brauchen es nicht in PHP, Sie müssen nur die $ uid in den HTML-Code übergeben.Ich sehe nichts im PHP-Ende, das erfordert, dass der aktive Tab an den PHP übergeben wird. Stattdessen übergeben Sie die uid var in js und verwenden Sie js, um die Verbindung zu formatieren und umzuleiten. – Wobbles

+0

UID ist etwas anderes hier. – trollster

Antwort

1

Sie werden Ihren Link ein wenig ändern müssen, wie folgt aus:

<a id="EditLink" href="<?= site_url('backend/edit/'. $uid) ?>">Edit</a> 

Und diese hinzufügen, wenn Sie auf die Registerkarte klicken, wobei gilt:

var tabValue = $(".nav-tabs .active > a").attr("href"); 
var url = $("#EditLink").attr("href"); 
$("#EditLink").attr("href", AppendToUrl(url, "tab", tabValue)); 

Mit der Funktion AppendToUrl:

function AppendToUrl(url, key, value) { 
    var regex = /\?/i; 
    if (regex.test(url)) { 
     return url + "&" + key + "=" + value; 
    } else { 
     return url + "?" + key + "=" + value; 
    } 
} 
0

Sie können nicht. Der aktive Tab ist Client-Seite, PHP ist Server-Seite. Sie können schließlich Javascript verwenden AJAX-Abfrage zu senden:

$.ajax({ 
    method: "POST", 
    url: "some.php", 
    data: { active_tab_id: jquery_function_returning_id() } 
}) 
    .done(function(url) { 
    $("#id_of_element_u_want_inject_href").attr("href", url) 
    }); 

Some.php:

<?php 
$data = $_POST['data']; 
echo site_url('backend/edit/'. $uid . $data['active_tab_id']); 
session_start(); 
$_SESSION['variable']=$data['active_tab_id']; 
?> 

sollten Sie in der Lage sein, Daten in Sitzung zuzugreifen.

Am besten wäre es voll Javascript Lösung :)

0

Behandeln Sie dies in JS, indem Sie die UID anstelle des ausgewählten Tabs übergeben.

So etwas wie das.

var uid = <?PHP echo $uid; ?>; 
function getHref() { 
    var selTab = $('.nav-tabs .active > a').attr('href'); 
    var retHref = 'backend/edit/' + uid + selTab; 
    return retHref 
} 

Kann ein PHP-Skript müssen diese in site_url shiv(), was auch immer das tut, aber das ist einfach genug.

-1

Sie sollten diesen Witz javasvript erreichen ... Wenn Sie auf eine Registerkarte seine ID und dann für jedes Element erforderlich href gesetzt ...

Verwandte Themen