php - Laravel Route::group 传递错误的变量

标签 php laravel laravel-5

我遇到了一个非常奇怪的问题,我已经为通配符子域设置了一个路由组,它现在将子域变量而不是正确的变量传递给我的 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 。

最佳答案

您在路由中定义了两个参数:subdomaincustomerID。这意味着 Controller 方法中的第一个参数将包含 subdomain 值,而第二个参数将包含 customerID 值。

因此相应地更改方法:

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

关于php - Laravel Route::group 传递错误的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241584/

相关文章:

php - Laravel:Mail::queue 和 $this->dispatch 有什么区别?

php - 找不到类 '..\Unit\UnitTestCase'

php - 键已定义,值已设置,但仍定义为空

php - Laravel 5.1 AJAX - 即使我发送 POST 请求也不允许返回 405 GET 方法

php - 从字符串中删除数字格式

php - 有什么方法可以根据百分比字符串匹配在 MySQL 中选择表行?

php - 使用干预/图像模块移动和重命名图片

php - Laravel Eloquent/SQL - 在数据库中搜索关键字

Laravel 5 - artisan 种子 [ReflectionException] 类 SongsTableSeeder 不存在

composer-php - laravel 5 自动加载不加载模型