2017-07-21 6 views
2

Ich habe ein sehr seltsames Problem, ich habe eine Route-Gruppe für Wildcard-Subdomains eingerichtet und es übergibt jetzt die Subdomain-Variable an meine Controller anstelle der richtigen Variable;Laravel Route :: Gruppe falsche Variablen übergeben

Route::group(['domain' => '{subdomain}.website.co.uk', 'middleware' => 'custom'], function() { 
    Route::group(['middleware' => 'auth'], function(){ 
     Route::get('/customer/view/{customerID}', '[email protected]'); 
    }); 
}); 

ich dann versuchen, und die Lade-/Kunde/view/20 und die Daten, die angezeigt wird, ist die Sub-Domain und nicht 20

public function viewCustomer($customerID){ 
    dd($customerID); 
} 

Ich kann nicht sehen, warum die {Sub-Domain} von der Routengruppe an alle meine Controller-Funktionen statt in diesem Fall {customerID} übergeben

Die "benutzerdefinierte" Middleware ist die unten, nur für den Fall, dass dies verursacht wird;

namespace App\Http\Middleware; 

use Closure; 
use App\Whitelabel; 

class Custom 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if($request->route('account') != 'my'){ 
      if(\Cookie::get('sub_domain') == NULL || \Cookie::get('sub_domain') != $request->route('account')) { 

       $whitelabel = Whitelabel::where('subdomain', '=', $request->route('account'))->first(); 

       if($whitelabel){ 
        \Cookie::queue('sub_domain', $request->route('account'), 43200); 
        \Cookie::queue('reseller_name', $whitelabel->reseller_name, 43200); 
        \Cookie::queue('reseller_logo', $whitelabel->logo_url, 43200); 
        \Cookie::queue('reseller_colour', $whitelabel->custom_colour, 43200); 
        \Cookie::queue('top_bar_colour', $whitelabel->top_bar_colour, 43200); 
       }else{ 
        \Cookie::queue(\Cookie::forget('sub_domain')); 
        \Cookie::queue(\Cookie::forget('reseller_name')); 
        \Cookie::queue(\Cookie::forget('reseller_logo')); 
        \Cookie::queue(\Cookie::forget('reseller_colour')); 
        \Cookie::queue(\Cookie::forget('top_bar_colour')); 
        return \Redirect::to('http://my.website.co.uk/'.$request->path()); 
       } 

      } 
     }else{ 
      \Cookie::queue(\Cookie::forget('sub_domain')); 
      \Cookie::queue(\Cookie::forget('reseller_name')); 
      \Cookie::queue(\Cookie::forget('reseller_logo')); 
      \Cookie::queue(\Cookie::forget('reseller_colour')); 
      \Cookie::queue(\Cookie::forget('top_bar_colour')); 
     } 

     return $next($request); 
    } 
} 

Dies ist nur das White-Label-Farbschema und das Logo zu setzen verwendet.

+1

Versuchen bearbeiten die Methode wie folgt: 'public function viewCustomer ($ Sub-Domain, $ customerID)' und sehen, ob die Variablen-Inhalte korrekt sind. –

+0

Oder versuchen Sie dieses 'Route :: -Muster ('Subdomain', '(dev.app | app)'); Route :: group (['domäne' => '{subdomain} .website.co.uk', 'middleware' => 'benutzerdefiniert'], function() { Route :: group (['middleware' => 'auth'], Funktion() { Route :: get ('/ customer/view/{KundenID}', 'CustomerController @ viewCustomer'); }); }); '! – Maraboc

+0

Der erste Kommentar funktionierte perfekt, Hinzufügen von $ Subdomain zu den Funktionsparametern, nicht ideal, aber funktioniert –

Antwort

2

Sie haben zwei Parameter in den Routen definiert: subdomain und customerID. Dies bedeutet, dass das erste Argument in der Controller-Methode den Wert subdomain enthält, während das zweite Argument den Wert customerID enthält.

daher das Verfahren entsprechend ändern:

public function viewCustomer($subdomain, $customerID) { 
    ... 
} 
Verwandte Themen