Laravel 5.5 嵌套控制器和视图
Laravel 5.5 nested controller and view
假设我有一个 "Contact" 实体,并且我已经构建了模型、控制器和视图。所有 CRUD 操作都有效。
现在我想给联系人添加地址。同一个联系人可能有多个地址,但每个地址只属于一个联系人。任何关于地址的 CRUD 操作都嵌套到联系人。
我已经建立了模型,到目前为止一切顺利。我手动填充了数据库,我想实现嵌套到 contacts.show.
的 addresses.index
Addresses 控制器方法应该是这样的:
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
假设我有一个 "Contact" 实体,并且我已经构建了模型、控制器和视图。所有 CRUD 操作都有效。 现在我想给联系人添加地址。同一个联系人可能有多个地址,但每个地址只属于一个联系人。任何关于地址的 CRUD 操作都嵌套到联系人。
我已经建立了模型,到目前为止一切顺利。我手动填充了数据库,我想实现嵌套到 contacts.show.
的 addresses.indexAddresses 控制器方法应该是这样的:
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