Wie, um einen Anker in CodeIgniter, wo Sie eine variable ändern möchten, die bereits in der URI?
Normalerweise würde ich nur mit URL-GET-Parameter, aber CodeIgniter scheint nicht zu mögen und keiner der URL-helper-Funktionen sind speziell für Sie, so dass ich versucht bin zu tun, das die "CodeIgniter Weg".
Ich würde gern eine Seite, wo das Modell kann, akzeptieren eine Reihe von verschiedenen URI-Parameter, keine unbedingt vorhanden ist, und keiner sein zu müssen in einer bestimmten Reihenfolge, viel wie eine normale URL-query-string mit get-Parametern.
Sagen wir, ich habe die folgende url:
http://example.com/site/data/name/joe/
Hier nicht inklusive controller oder die Methode gäbe es einen parameter:
$params = $this->uri->uri_to_assoc(1);
print_r($params);
//output
array( [name] => [joe] )
Wenn ich wollte 'joe' ändern zu 'ray', ich könnte dies tun:
echo anchor('name/ray');
Einfach genug, aber was, wenn es mehr Parameter und die position der Parameter ändern? Wie:
http://example.com/site/data/town/losangeles/name/joe/
http://example.com/site/data/age/21/name/joe/town/seattle
Gibt es eine Möglichkeit, nehmen Sie einfach das URL ein und Ausgabe, die es nur mit dem parameter 'name' geändert?
Edit: Als pro landons Rat, den ich nahm ihm das Skript und legen Sie es als eine url-helper-Funktion durch das anlegen der Datei:
application/helpers/MY_url_helper.php
Im Grunde schrieb ich die Funktion current_url() Optional akzeptieren ein array von Parametern, die ersetzt werden, die in die aktuelle URI. Wenn Sie nicht das array übergeben die Funktion arbeitet, als ursprünglich vorgesehen:
function current_url($vars = NULL)
{
$CI =& get_instance();
if ( ! is_array($vars))
{
return $CI->config->site_url($CI->uri->uri_string());
}
else
{
$start_index = 1;
$params = $CI->uri->uri_to_assoc($start_index);
foreach ($vars as $key => $value)
{
$params[$key] = $value;
}
$new_uri = $CI->uri->assoc_to_uri($params);
return $CI->config->site_url($new_uri);
}
}
Funktioniert es. Ich denke, die Quintessenz ist, ich weiß nicht, wie die 'CodeIgniter Weg' und ich suchen mixing-segment, basierend URL ' s mit Abfragezeichenfolgen oder anderen Frameworks zusammen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
assoc_to_uri()
Methode, um es wieder zu URI-format:Ich würde empfehlen, wickeln diese in eine Hilfsfunktion von einigen Sortieren. Happy coding!
Warum nicht CodeIgniter-built-in URI-Klasse? Es ermöglicht die Auswahl der entsprechenden Segmente aus, die URL, die Sie verwenden können, erstellen Sie die Anker. Jedoch, es sei denn, man erstellt benutzerdefinierte Routen, würde es bedeuten, dass Ihre Methoden würden akzeptieren müssen mehr Parameter.
Verwenden URI-Klasse, Sie würden die folgenden in der Methode:
Angenommen /site/data/Namen sind alle CodeIgniter bestimmten (/controller/Methode/parameter)
Nun, ich denke, es könnte sein, viel einfacher, wenn Sie wurden mit Routen. Ihre route würde so Aussehen:
Effictively, Ihre URL können so detailliert und spezifisch wie Sie wollen, es zu sein, aber in deinem code, die Funktion ist viel sauberer und die Parameter sind sehr anschaulich. Sie Methode würde wie folgt definiert:
Erweitern Sie Ihre route zu akzeptieren, mehr Parameter, Ihre route für die die Beispiel-URL "http://example.com/site/data/age/21/name/joe/town/seattle" Sie versorgt würde wie folgt Aussehen:
Und Ihre Funktion würde dann so Aussehen: