在默认路由/ web.php之外的视图中不能使用routes('name')函数

时间:2018-03-02 22:21:02

标签: laravel laravel-5 laravel-5.5

我有一个使用WEB中间件的组(如默认),但有自己的routes/org.php文件;

来自RouteServiceProvider.php:

protected function mapWebRoutes()
{

    // Match my own domain FIRST
    Route::group(['domain' => 'a.example','www.a.example', 'admin.a.example'], function()
    {
        // Original Web Route
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));
    });



    // Match any other domains or subdomains
    Route::group(['domain' => '{domain}'], function()
    {
        // Org middleware
        Route::middleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/org.php'));
    });

}

```

routes/org.php中的

我有Route::get('/test', 'OrgTestCtrlr@test')->name('test');

有关信息:

OrgTestCtrlr extends OrgBaseCtrlr

.. OrgBaseCtrlr extends Controller(默认的laravel控制器)

(所以基本上OrgTest扩展了OrgBase扩展Controller)

我的功能 public function test() { return view('org.test'); }

../views/org/test.blade.php

中调用刀片文件

在此文件中,我尝试使用{{ route('test') }}引用

我收到此错误

  

“缺少[路线:测试] [URI:测试]的必需参数。”

*我已经移动了命名空间,试图不要多次扩展控制器等等,我只是在追逐我的尾巴。请指教。

1 个答案:

答案 0 :(得分:1)

您也需要传递域名:

{{ route('test', ['domain' => 'some_domain']) }}

另外,将方法更改为:

public function test($domain) {
    return view('org.test');
}