我遇到了一个非常奇怪的问题,我已经为通配符子域设置了一个路由组,它现在将子域变量而不是正确的变量传递给我的 Controller ;
Route::group(['domain' => '{subdomain}.website.co.uk', 'middleware' => 'custom'], function() {
Route::group(['middleware' => 'auth'], function(){
Route::get('/customer/view/{customerID}', 'CustomerController@viewCustomer');
});
});
然后我尝试加载/customer/view/20,显示的数据是子域而不是 20
public function viewCustomer($customerID){
dd($customerID);
}
我不明白为什么路由组中的 {subdomain} 被传递到我的所有 Controller 函数,而不是在本例中的 {customerID}
“自定义”中间件如下,以防万一这是导致它的原因;
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);
}
}
这仅用于设置白标配色方案和 Logo 。
最佳答案
您在路由中定义了两个参数:subdomain
和 customerID
。这意味着 Controller 方法中的第一个参数将包含 subdomain
值,而第二个参数将包含 customerID
值。
因此相应地更改方法:
public function viewCustomer($subdomain, $customerID) {
...
}
关于php - Laravel Route::group 传递错误的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241584/