laravel 包的命名路由

laravel named routing for package

我一直在使用 laravel 5 包 development.So 我用 composer 创建了一个包 'lakshmajim/testview'.

我已经通过创建新的 laravel 项目克隆了该包进行测试

composer require lakshmajim/testview dev-master

然后像这样更新composer.json主文件

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\": "app/",
        "lakshmajim\testview\": "vendor/lakshmajim/testview/src"   
    }
},

那我就完成了

composer dumpautoload 
composer update 
php artisan vendor:publish

我的路线(php artisan route:list)

    +--------+----------+-----------------+-------------------------+------------+
|Domain|Method | URI              |Name| Action                                      | Middleware |
    +--------+----------+-----------------+------+----------+------------+
|     | GET|HEAD| /              |     | Closure                       
|     | GET|HEAD| accessurl/{str}|     | lakshmajim\testview\TestviewController@index | |    
|     | GET|HEAD| hi             |     | App\Http\Controllers\Controller@e            |            |

当我尝试访问时 http://localhost:8000/accessurl/any%20parameter%20here 工作 正常并显示结果。

我的控制器文件

use Redirect;

class Controller extends BaseController
{ 
        public function e()
        {
            $url='accessurl/strtestpackage';
            return Redirect::route($url);
        }
}

问题 是当我尝试从控制器访问包路由时它显示以下错误

`**InvalidArgumentException in UrlGenerator.php line 296: Route [accessurl/str] not defined**`.

问题 我怎样才能访问供应商目录表单控制器中存在的命名路由? (如何使用 vendor/lakshmajim/testview/src/routes.php 来自 app/Http/Controllers/Controller.php 的文件? )

谢谢。

route()方法将路由名称作为参数。如我所见,您的包裹没有路线名称。 你可以只使用 redirect()

return redirect('/url/here');

同样在您的 routes.php 中,您可以使用 as 关键字定义路线名称。检查文档 here.