简体   繁体   English

Laravel 7:读取单个资源不起作用

[英]Laravel 7: Read single resource not working

i'm new in Laravel and i'm building a simple user registration system.我是 Laravel 的新手,正在构建一个简单的用户注册系统。

When i access edit route, it seems that it's not getting the requested resource data.当我访问编辑路由时,它似乎没有获取请求的资源数据。

I did some research and all the stuff i read, is already in place.我做了一些研究,我读到的所有东西都已经到位。 Am i missing something?我错过了什么吗?

web.php(router): web.php(路由器):

use Illuminate\Support\Facades\Route;

// USER PAGES:
Route::resource('users', 'UsersController');

UsersController.php:用户控制器.php:

namespace App\Http\Controllers;

use App\Users;
use Illuminate\Http\Request;

class UsersController extends Controller
{
    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Users  $users
     * @return \Illuminate\Http\Response
     */
    public function edit(Users $users)
    {
        return view('dashboard.user.edit', compact('users'));
    }

/**
     * Remove the specified resource from storage.
     *
     * @param  \App\Users  $users
     * @return \Illuminate\Http\Response
     */
    public function destroy(Users $users)
    {
        $users->delete();

        return redirect()->route('users.index')
            ->with('success', "User was removed successfully.");
    }
}

edit.blade.php: edit.blade.php:

<form id="user-data" action="{{route('users.update',$users->id)}}" method="POST" enctype="multipart/form-data">
  @csrf
  @method('PUT')

  <input type="file" id="input-user-photo" name="user_avatar" style="display: none;">
    <div class="card">
      <div class="card-header">User Data</div>
        <div class="card-body card-block">
          <div class="form-group">
            <div class="input-group">
              <div class="input-group-addon">
                <i class="fa fa-user"></i>
              </div>
              <input type="text" id="username" name="name" placeholder="Username" class="form-control" value="{{$users->name}}">
            </div>
          </div>
          <div class="form-group">
            <div class="input-group">
              <div class="input-group-addon">
                <i class="fa fa-envelope"></i>
              </div>
              <input type="email" id="email" name="email" placeholder="Email" class="form-control" value="{{$users->email}}">
            </div>
          </div>
          <div class="form-group">
            <div class="input-group">
              <div class="input-group-addon">
                <i class="fa fa-asterisk"></i>
              </div>
              <input type="password" id="password" name="password" placeholder="Password (For not changing, leave it blank)" class="form-control">
            </div>
           </div>
           <div class="form-group">
             <div class="input-group">
               <div class="input-group-addon">
                 <i class="fa fa-asterisk"></i>
               </div>
               <input type="password" id="password-confirmation" placeholder="Password Confirmation" class="form-control">
             </div>
           </div>
           <div class="form-actions form-group">
             <a class="btn btn-secondary btn-md" href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Cancel</a>
             <button type="submit" class="btn btn-success btn-md">Submit</button>
           </div>
         </div>
       </div>
     </form>

On Screen (URL: /users/{{$anyUserId}}/edit):屏幕上(网址:/users/{{$anyUserId}}/edit):

在此处输入图片说明

Also, when i access destroy route it reaches the right controller's method "destroy" and even redirects properly, with success message, as specified in the method, but the resource is not deleted from database.此外,当我访问销毁路由时,它会到达正确的控制器方法“销毁”,甚至正确重定向,并显示成功消息,如方法中所指定,但资源并未从数据库中删除。 In both cases, it seems to me that it is not finding the resource to inject as parameter within these methods.在这两种情况下,在我看来,它没有找到在这些方法中作为参数注入的资源。

Any clues?有什么线索吗? Thx in advance!提前谢谢!

If the resource name is users the route parameter would be user (singular).如果资源名称是users则路由参数将是user (单数)。 The route parameters are by default the singular version of the resource name when using resource routing.使用资源路由时,路由参数默认是资源名称的单数版本。

For implicit route model binding to work you need the typehinted parameter of your methods to match the route parameter:要使隐式路由模型绑定工作,您需要方法的 typehinted 参数来匹配路由参数:

public function edit(Users $user)

public function destroy(Users $user)

Side note: usually Model names are singular and their tables are plural.旁注:通常模型名称是单数,而它们的表格是复数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM