2016-06-23 14 views
0

Ich bin neu in CodeIgniter und ich habe einige Praxis Codes versuchen. In diesem habe ich eine Funktion mit 2 Parametern, $p1 und $p2 erstellt. Meine Funktion arbeitet auch mit Standardparametern. Jetzt versuche ich einen Parameter im Code und den anderen in der URL zu geben, hier $p2="Nimishan".Warnung in URL mit PHP codeigniter Routing

<?php 
class Hello extends CI_Controller{ 
    public function first($p1,$p2="Nimishan"){ 
     echo "This is the first method<br>"; 
     echo "My parameters are : $p1 and $p2"; 
    } 
} 
?> 

Und meine URL lautet: localhost/code/index.php/hello/first/hey So ist der Ausgang

hey, Nimishan

aber die Warnung, die ich erhalte, wenn ich den Standard-Parameterwert $p1 ändern.

Ich versuchte die URL, um die richtige Ausgabe auf verschiedene Arten zu erhalten.

zB: localhost/code/index.php/hallo/first/nimishan

aber ich erhalte Warnungen

Severity: Warning 
Message: Missing argument 2 for Hello::first() 

Severity: Notice 
Message: Undefined variable: p2 

Ich bin nicht sicher, wo ich bin fehlt.

Was ich will, ist die korrekte Ausgabe zu erhalten, indem Wert für den ersten Parameter geben, anstelle der zweiten und der richtigen Art und Weise der URL.

+1

Sie müssen Segmente innerhalb Codeigniter verwenden, um die Werte von der Route von URL zu erhalten, die Art, wie Sie den Controller behandeln und Parameter darin eingeben, es ist falsch. benutze $ this-> uri-> segment(); im Controller und entfernen Sie die Parameter aus der Funktion. Alle Daten innerhalb der URL sind innerhalb des Segments. –

Antwort

3

Ihre CodeIgniter config.php-Datei öffnen, die in Anwendung befindet \ config \ config.php überprüfen Sie bitte unter $ config Array Werte sind richtig oder nicht konfiguriert.

$config['permitted_uri_chars'] = ''; // a-z 0-9~%.:_\- 
$config['encryption_key'] = ''; //Some unique random string 
2

Dies ist gültig.

public function first($p1,$p2="Nimishan"){} 

aber folgende ist ungültig

public function first($p1="Hello",$p2){} 

jedoch nicht Codeigniter Problem ist eher die Regel PHP ist. Immer der Standardwert von Parametern muss von der letzten platziert werden. Wenn für den Rest der Parameter kein Standardwert erforderlich ist, können Sie null oder etwas anderes zuweisen. so können Sie verwenden, wie

public function first($p1="Hello",$p2 = NULL){} 
+0

'public function first ($ p1 =" Hallo ", $ p2 = NULL) {}' Wenn ich das nutze, wie die URL sein soll? – NIMISHAN

+0

Was auch immer Ihre URL ist, es wird kein Fehler/keine Warnung mehr angezeigt. lies das "localhost/code/index.php/hallo/first/nimishan" und überprüfe keinen Fehler anyomre –

+0

kein Fehler, in Ordnung. Aber die Ausgabe ist "Nimishan". Ich möchte 'Hallo, nimishan' – NIMISHAN

1

Ich glaube, Sie versuchen, etwas zu tun -

public function first() { 
    $p1 = $this->uri->segment(1); 
    $p2 = $this->uri->segment(2); 
    echo "This is the first method<br>"; 
    echo "My parameters are : $p1 and $p2"; 
    } 
} 

also, wenn Ihre URL war http://localhost/code/index.php/hello/first/welcome/nimishan this-> uri-> Segment (1) wäre "Willkommen", Segment (2) als "Nimishan" und so weiter.

, wenn Ihre URL `http://localhost/code/index.php/hello/first/ beiden p1 $ ist und $ p2 würden NULL sein.

Wenn Sie auf Standardwerte zu übergeben müssen, können Sie den Standardwert bieten z

$p1 = $this->uri->segment(1, 'Hello'); 
$p2 = $this->uri->segment(2, 'Nimishan'); 
+0

Ich wollte den ersten Parameter p1 im Code und den nächsten Parameter in der URL angeben. Die Frage ist "Wie?" – NIMISHAN