zoukankan      html  css  js  c++  java
  • 『隐性路由模型绑定』

    app/Http/Controllers/UsersController.php

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    use AppHttpRequests;
    use AppModelsUser;
    
    class UsersController extends Controller
    {
        public function create()
        {
            return view('users.create');
        }
    
        public function show(User $user)
        {
            return view('users.show', compact('user'));
        }
    }

    Laravel 会自动解析定义在控制器方法(变量名匹配路由片段)中的 Eloquent 模型类型声明。在上面代码中,由于 show() 方法传参时声明了类型 —— Eloquent 模型 User,对应的变量名 $user 会匹配路由片段中的 {user},这样,Laravel 会自动注入与请求 URI 中传入的 ID 对应的用户模型实例。

    此功能称为 『隐性路由模型绑定』,是『约定优于配置』设计范式的体现,同时满足以下两种情况,此功能即会自动启用:

    1. 路由声明时必须使用 Eloquent 模型的单数小写格式来作为路由片段参数,User 对应 {user}
    Route::get('/users/{user}', 'UsersController@show')->name('users.show');

    在使用资源路由 Route::resource('users', 'UsersController'); 时,默认已经包含了上面的声明。

    1. 控制器方法传参中必须包含对应的 Eloquent 模型类型声明,并且是有序的:
    public function show(User $user)
    {
        return view('users.show', compact('user'));
    }

    当请求 http://sample.app/users/1 并且满足以上两个条件时,Laravel 将会自动查找 ID 为 1 的用户并赋值到变量 $user 中,如果数据库中找不到对应的模型实例,会自动生成 HTTP 404 响应。

    return view('users.show', compact('user'));

    我们将用户对象 $user 通过 compact 方法转化为一个关联数组,并作为第二个参数传递给 view 方法,将数据与视图进行绑定。

    show 方法添加完成之后,我们便能在视图中使用 user 变量来访问通过 view 方法传递给视图的用户数据。

  • 相关阅读:
    列"xx"不在表Table中
    asp.net中自定义验证控件
    ASP.NET母版与内容页相对路径的问题
    html点小图看大图最快捷的方法
    ThinkCMF的跳转303 404等页面的方法
    关于ThinkCMF自带插件上传不了图片的解决方法
    js中百分比运算,大型数据会算错
    数据库价格汇总查询的方法
    信息资源5
    操作系统概论
  • 原文地址:https://www.cnblogs.com/luxia/p/8006086.html
Copyright © 2011-2022 走看看