laravel - 需要 Laravel Route::controller 和 Route::controllers
问题描述
正如我们在 Laravel 5.2 中所知道的,该Route::controller()
方法Route::controllers()
已被弃用,但它对于减少路由数量非常方便。我能够写出这样的简单路线Route::controller('admin/invoice','InvoiceController')
。通过这个简单的一条路线,我可以通过控制器管理与发票相关工作相关的所有事情。
class InvoiceController extends Controller{
public function getInvoices(){ }
public function getInvoiceDetails(){ }
public function postStoreInvoice(){ }
public function postUpdateInvoice(){ }
public function postStoreInvoiceDetails(){ }
public function postupdateInvoiceDetails(){ }
public function postDeleteInvoice(){ }
public function postDeleteInvoiceDetails(){ }
....
}
但不幸的是,这个Route::controller()
并且Route::controllers()
不再可用 laravel 版本> 5.1。一个可用的选项,Route::resource()
但它的路线数量有限。laravel 路线是可宏的,有一个选项可以扩展路线功能,例如
Illuminate\Routing\Router::macro('controller', function ($routes) {
// implementation
});
有没有人为 Laravel 5.8、6实现Route::controller()
和方法?Route::controllers()
或建议任何方式。
解决方案
您可以使用Route::resource()
或Route::resources()
。
例子:
Route::resource('books', 'BookController');
这将假设你有
class BookController extends Controller {
// to list resources.
public function index();
// to show create form.
public function create();
// to store resource in database.
public function store();
// to show single resource.
public function show();
// to show edit form.
public function edit();
// to edit and then store the modified resource in database.
public function update();
// to delete a resource from database.
public function destroy();
}
您应该阅读https://laravel.com/docs/master/controllers#resource-controllers了解更多信息。
编辑
5.2
由于某种原因,隐式控制器已在版本中删除。
如果您来自 CodeIgniter 世界,那么您可能对隐式路由有温暖和模糊的感觉。您知道,URI 与将被调用的控制器方法匹配的位置。你甚至可能希望在你的 Laravel 开发中使用它(Laravel 可以做到)。
虽然一开始简单地调用 Route::controller('admin', 'AdminController') 然后从控制器声明所有你想要的路由似乎很有用,但这样做有很多挫折。想一想在使用隐式路由时如何利用命名路由或创建嵌套资源,甚至做一些简单的事情,例如重命名控制器类而不影响 URI 设计。
不,当涉及到隐式路由时,就说不。
来源:https ://laracasts.com/lessons/say-no-to-implicit-routing
但是,如果你想要这个功能,你可以使用这个包: Laravel Routes Publisher或Laravel Advanced Route
推荐阅读
- node.js - 未为 dev 编译子文件夹
- android - xml 文件中的选择器标记与 SVG 存在一些问题
- arrays - 在较大的数组中查找较小的数组
- python - 从二进制转换为十进制时无法取回整个列表
- c# - 如何在 uwp 的 MediaPlayerElement 中的视频中从 A 播放到 B?
- javascript - Javascript reduce - 在多个变量中拆分累加器
- android - Crashlytics 在从 Crashreporting 移动到 Firebase 中的 Crashlytics 时发现了一个无效的 API 密钥:@string/twitter_consumer_secret
- c - 在 C 中打印数字模式
- python - Django:找不到页面(404)为什么...?
- python-3.x - 如何为使用 matplotlib.patches.circle 创建的点添加注释?