如何编写类似于 Laravel 5.1 的 Laravel 5.8 控制器路由。
问题出现的原因:在Laravel 5.8中,使用控制器和路由的方式与Laravel 5.1有所不同。
解决方法:根据Laravel 5.1的写法,调整Laravel 5.8的控制器和路由的写法。
文章内容如下:
在Laravel 5.8中,可以通过在数组中使用"as"来调用路由,就像在路由中使用一样,例如`{{route('claimsubmit')}}`。
相比之下,在Laravel 5.1中,可以使用以下方式来定义控制器和路由:
Route::resource('claimform',array('as'=>'claimform','uses'=>'UserController'));
但是,在Laravel 5.8中,我们需要做一些调整,以使控制器和路由的写法与Laravel 5.1相似。
解决方法是在路由中使用闭包函数,并在闭包函数中调用控制器的方法。以下是一个示例:
Route::get('claimform', function () { return App::make('UserController')->callAction('index', $parameters = array()); })->name('claimform.index'); Route::post('claimform', function () { return App::make('UserController')->callAction('store', $parameters = array()); })->name('claimform.store'); // 添加其他路由...
通过上述方法,我们可以将Laravel 5.8的控制器和路由的写法调整为与Laravel 5.1相似的方式。
Laravel 5.8版本中,controllers
方法被弃用了。根据升级指南:
使用
Route::controller
的隐式控制器路由已被弃用。请在路由文件中使用显式路由注册。
1) 使用资源路由
如果你的控制器使用了标准的index
、store
、show
等方法,你可以简单地使用资源路由。例如:
Route::resource('user', 'UserController');
然而,如果你想排除某些方法,你可以将它们添加到资源路由中。例如:
Route::resource('user', 'UserController', ['except' => 'show']);
2) 显式地声明路由
你可以按照Laravel 5.2的升级指南,显式地声明每个路由。
3) 创建宏
Laravel的路由器是可扩展的。这意味着你可以向其添加自己的方法。例如,在你的应用程序服务提供者中,你可以这样写:
Illuminate\Routing\Router::macro('controllers', function ($routes) { // 创建你自己的控制器方法的实现。 });
这允许你创建自己的controllers
方法的实现,这意味着你不需要修改你的路由或控制器,但你可能需要深入研究Laravel的路由处理,以了解如何实现这一点。
希望这能帮到你。
好的...我会设置我的路由。
为什么?为什么?Laravel开发者,你们本应该“照亮”Web开发,而不是通过删除有用的功能来使它更加困难。
问题出现的原因是用户想要在Laravel 5.8中编写类似于Laravel 5.1的控制器路由。解决方法是使用资源控制器(Resource Controller)并在routes/web.php中实现。这将自动生成路由的名称。如果要排除控制器资源的show方法,可以在except方法中添加数组。如果只想获取选定的选项,可以使用only。需要注意的是,应该使用routes/web.php而不是api/web.php。如果要创建一个资源控制器,可以使用php artisan make:controller TaxesController --resource命令。这将为您提供一个很好的CRUD模板。如果用户想要显式地定义控制器中要使用的函数,可以在资源中进行设置。但资源控制器与任何控制器不同,只有在控制器是资源控制器的情况下才能使用这个解决方法。