Laravel 5.5 嵌套控制器和视图

Laravel 5.5 nested controller and view

假设我有一个 "Contact" 实体,并且我已经构建了模型、控制器和视图。所有 CRUD 操作都有效。 现在我想给联系人添加地址。同一个联系人可能有多个地址,但每个地址只属于一个联系人。任何关于地址的 CRUD 操作都嵌套到联系人。

我已经建立了模型,到目前为止一切顺利。我手动填充了数据库,我想实现嵌套到 contacts.show.

的 addresses.index

A​​ddresses 控制器方法应该是这样的:

public function index($ContactId)
{
    $addresses = Addresses::where("contact_id",$ContactId)->paginate(10);
    return view('addresses.index',compact('addresses',"$ContactId"))
        ->with('i', (request()->input('page', 1) - 1) * 5);
}

现在我想构建视图,但我迷路了,因为我找不到任何有用的示例或教程(或者它们是针对非常旧的版本)

我将地址完全嵌套在用户、联系人、潜在客户、公司等中,包括视图目录,因此 users.address.index 将是视图路径,例如。

访问地址的路由也是嵌套的。如果这是一个只有用户有地址的简单项目,url 将是“/users/1/addresses”来列出他们的地址。列出地址的控制器方法通常如下所示:

class AddressController {
    public function index(Request $request, User $user) {
        return view('users.addresses.index', ['addresses' => $user->addresses]);
    }
}

资源路由让这一切变得简单,您只有两个路由文件条目,如下所示:

Route::resource('users', 'UserController');
Route::resource('users.addresses', 'AddressController');

如果我在一个应用程序中有多个模型可以有地址,我使 Address 多态并进一步抽象出上述控制器。

https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations