我正在尝试为“公司”创建一个带有变量的前缀来登录平台。所有用户都与公司绑定,因此不需要正常的/login
。我想使用像`/ acme-company-name / login
我在新安装时使用默认的Laravel auth:php artisan make:auth
。
Route::group(['prefix' => '{company}'], function () {
Auth::routes();
});
当我尝试导航到/company-name/login
时,我看到以下错误:
Missing required parameters for [Route: login] [URI: {company}/login].
查看自动生成的login.blade.php
内部,我看到函数调用route('login')
,这似乎是一切都在破坏的地方。我想我需要一些方法来为该函数提供变量或者以某种方式重新定义“登录”路径?我宁愿不必替换呼叫Auth::routes()
,但如果需要解决此问题,肯定会这样做。
我应该注意,我已尝试定义群组'as' => 'company'
并更改route('company.login')
,但后来我被告知路由company.login
未定义。
答案 0 :(得分:0)
你能尝试将$ company变量传递给函数吗?
Route::group(['prefix' => '{company}'], function ($company) {
Auth::routes();
});
并确保在调用路线时通过company-name
,因为它是必需参数。
在login.blade.php
中使用{{ url("$company/login") }}
代替route('login')
。
答案 1 :(得分:0)
route()
助手有多个参数;)
route('login', ['company' => $company])
答案 2 :(得分:0)
您需要在视图中分享您的前缀,并按以下方式设置路线:
Route::group(['prefix' => '{company}'], function ($company) {
view()->share('company', $company); // share $company in views
Auth::routes();
});
现在你有$company
Router
的实例,你需要访问路由前缀值,你需要获取当前路由并得到company
参数,这样你就应该重写route()
1}}辅助函数如下:
{{ route('login',['company'=>$company->getCurrentRoute()->__get('company')]) }}
// getCurrentRoute Get the currently dispatched route instance
//__get Dynamically access route parameters
修改强>
您可以编写自定义帮助函数,如下所示:
/**
* Generate the URL to a named route for Company Auth.
*
* @param string $name
* @param Router $company
* @return string
*/
function companyRoute($name,$company)
{
return app('url')->route($name, ['company'=>$company->getCurrentRoute()->__get('company')] ,true);
}
答案 3 :(得分:0)
请检查适合我的代码。
Route::group(['prefix' => '/{company}'], function () {
// ensure that auth controllers exists in right place (here it is App\Http\Controllers\Auth\LoginController)
// in LoginController funtion
Auth::routes();
//or you can try using custom routing like this
Route::get('{something}', function($company, $something)
{
var_dump($company, $something);
});
});
如果您在文件末尾定义此路线,则表示您提到的错误。
ErrorException in UrlGenerationException.php line 17:
Missing required parameters for [Route: login] [URI: {company}/login]. (View: \resources\views\auth\login.blade.php)
尝试将此路线定义为web.php中的第一条路线并检查。
由于
答案 4 :(得分:0)
查看自动生成的login.blade.php,我看到了函数调用路由(' login'),这似乎是一切都在破碎的地方。
是。通过做
user_read
您正在使所有身份验证路由采用Route::group(['prefix' => '{company}'], function () {
Auth::routes();
});
参数。因此,在您的观看次数中,您可以company
而不是route('login')
。 (对于所有auth路线都是一样的。)
然后可能在您的route('login', ['company' => Request::route('company')])
中,您需要相应地覆盖App\Http\Controllers\Auth\LoginController
方法:
login