首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册laravel 9时上传图片

注册laravel 9时上传图片
EN

Stack Overflow用户
提问于 2022-09-01 20:19:36
回答 1查看 20关注 0票数 1

我在试着做一个用户crud。所有的工作都很好的用户这个创建,但我的问题是,当我上传一个个人资料的图像。

UserController

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $users = User::latest()->paginate(50);



        return view('superadmin.user.index', compact('users'))

            ->with('i', (request()->input('page', 1) - 1) * 5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $usersall = User::all();
        return view('superadmin.user.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'secretword' => 'required',
            'email' => 'required',
            'password' => 'required',
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

        $input = $request->all();



        if ($image = $request->file('image')) {

            $destinationPath = 'images/';

            $profileImage = date('YmdHis') . "." . $image->getClientOriginalExtension();

            $image->move($destinationPath, $profileImage);

            $input['image'] = "$profileImage";
        }

        User::create($input);

        return redirect()->route('user.index')
            ->with('success', 'User created');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        // $request->validate([

        //     'name' => 'required',

        //     'detail' => 'required'

        // ]);

  

        // $input = $request->all();

  

        // if ($image = $request->file('image')) {

        //     $destinationPath = 'images/';

        //     $profileImage = date('YmdHis') . "." . $image->getClientOriginalExtension();

        //     $image->move($destinationPath, $profileImage);

        //     $input['image'] = "$profileImage";

        // }else{

        //     unset($input['image']);

        // }

          

        // $users->update($input);

    

        // return redirect()->route('products.index')

        //                 ->with('success','Product updated successfully');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $users = User::find($id);
        $users->delete();
        return redirect()->route('user.index')->with('success', 'Utilisateur supprime');
    }
}

view/superadmin/user/create.blde.php

代码语言:javascript
复制
@extends('superadmin.layouts.app')
@section('content')
<div class="container-fluid">
    <div class="row">
        <!-- left column -->
        <div class="col-md-12">
            <!-- general form elements -->
            <div class="card card-primary">
                <div class="card-header">
                    <h3 class="card-title">New User</h3>
                </div>
                <!-- /.card-header -->
                <!-- form start -->
                <form method="POST" action="{{ route('user.store') }}" enctype="multipart/form-data">
                    @csrf
                    <div class="card-body">
                        <div class="form-group">
                            <label for="exampleInputEmail1">Name</label>
                            <input type="text" class="form-control" placeholder="Enter Name" name="name" required>
                        </div>
                        @error('name')
                        <div class="col-12">
                            <div class="alert alert-danger">{{ $message }}</div>
                        </div>
                        @enderror

                        <div class="form-group">
                            <label for="exampleInputFile">Image</label>
                            <div class="input-group">
                                <div class="custom-file">
                                    <input type="file" class="custom-file-input" id="Image" name="image" required>
                                    <label class="custom-file-label" for="exampleInputFile">Choose file</label>
                                </div>
                            </div>
                        </div>
                        @error('image')
                        <div class="col-12">
                            <div class="alert alert-danger">{{ $message }}</div>
                        </div>
                        @enderror

                        <div class="form-group">
                            <label for="exampleInputEmail1">Secret word</label>
                            <input id="secretword" type="text" class="form-control @error('secretword') is-invalid @enderror" name="secretword" value="{{ old('secretword') }}" required autocomplete="secretword" autofocus>
                        </div>
                        @error('secretword')
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                        @enderror

                        <div class="form-group">
                            <label for="exampleInputEmail1">Telegram</label>
                            <input id="telegram" type="text" class="form-control @error('telegram') is-invalid @enderror" name="telegram" value="{{ old('telegram') }}" required autocomplete="telegram" autofocus>
                        </div>
                        @error('telegram')
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                        @enderror

                        <div class="form-group">
                            <label for="exampleInputEmail1">Email</label>
                            <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
                        </div>
                        @error('email')
                        <div class="col-12">
                            <div class="alert alert-danger">{{ $message }}</div>
                        </div>
                        @enderror

                        <div class="form-group">
                            <label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label>
                            <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
                        </div> 
                                @error('password')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                        

                        <div class="form-group">
                            <label for="password-confirm" class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label>
                            <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
                        </div>
            </div>

            <!-- /.card-body -->
            <div class="card-footer pt-0">
                <button type="submit" class="btn btn-primary">Submit</button>
            </div>
            </form>
        </div>

    </div>

    <!--/.col (right) -->
</div>
<!-- /.row -->
</div>
@endsection

view/superadmin/user/index.blde.php

代码语言:javascript
复制
@extends('superadmin.layouts.app')
@section('stylesheets')
<style>
    .thread-parent {
        position: relative;

    }

    .thread-child {
        display: none;
        position: absolute;
        width: 50%;
        top: 10%;
        left: 24%;
    }

    .card-inner {
        position: relative;
    }

    .fa-window-close {
        position: absolute;
        right: 5px;
        top: 5px;
        cursor: pointer;
    }

    .child {
        word-break: break-all;
    }
</style>
@endsection

@section('content')
<div class="container thread-parent">
                                <a href="{{ route('user.create') }}" class="btn btn-success btn-sm"> <i class="fas fa-plus"></i></a>

    <table class="table" id="example1">
        <thead>
            <tr>
                <th scope="col">Action</th>
                <th scope="col">Name</th>
                <th scope="col">Image</th>
                <th scope="col">Telegram</th>
                <th scope="col">Secret word</th>
                <th scope="col">Thread</th>
                <th scope="col">Reply thread</th>
                <th scope="col">Messages</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($users as $user)
            <tr>
                
                <td>
                    <!-- <a href="{{ route('threads.edit', $user->id) }}" class="btn btn-success btn-sm"> <i class="fas fa-edit"></i></a>
                            <a href="javascript:showBlockBox({{ $user->id }})" class="btn btn-warning btn-sm" style="z-index: 999"><i class="fas fa-exclamation-circle"></i></a>
                            -->
                            <!-- <a href="{{ route('user.create', $user->id) }}" class="btn btn-success btn-sm"> <i class="fas fa-plus"></i></a> -->
                            <a href="{{ route('user.destroy', $user->id) }}" class="btn btn-danger btn-sm" onclick="return confirm('Are you sure you want to delete this')"><i class="fas fa-trash"></i></a>
                </td>
                <td>{{ $user->name }}</td>
                <td> <img src="/images/{{ $users->image }}" width="100px"></td>
                <td><a href=""><i class="fab fa-telegram"></i></a></td>
                <td>{{ $user->secretword }}</td>
                <td><a href=""><i class="fas fa-comment"></i></a></td>
                <td><a href=""><i class="fas fa-comments"></i></a></td>
                <td><a href=""><i class="fas fa-envelope"></i></a></td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>
@endsection
@section('scripts')
<script>
    $(function() {
        // $("#example1").DataTable({
        //     "responsive": true,
        //     "lengthChange": false,
        //     "autoWidth": false,
        //     "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
        // }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');

        $('#example1').DataTable({
            "paging": true,
            "lengthChange": false,
            "searching": true,
            "ordering": true,
            "info": true,
            "autoWidth": false,
            "responsive": true,
        });
    });

    function showBlockBox(threadid) {
        $('.thread-child').show();
        $('#threadid').val(threadid);
    }

    function hideBlockBox() {
        $('.thread-child').hide();
        $('#threadid').val("");
    }
</script>
@endsection

模型

代码语言:javascript
复制
namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Qirolab\Laravel\Reactions\Traits\Reacts;
use Qirolab\Laravel\Reactions\Contracts\ReactsInterface;

class User extends Authenticatable implements MustVerifyEmail, ReactsInterface
{
    use HasApiTokens, HasFactory, Notifiable, Reacts;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'secretword',
        'image',
        'telegram',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function roles()
    {
        return $this
            ->belongsToMany(Role::class)
            ->withTimestamps();
    }

    public function users()
    {
        return $this
            ->belongsToMany('App\User')
            ->withTimestamps();
    }

    public function authorizeRoles($roles)
    {
        if ($this->hasAnyRole($roles)) {
            return true;
        }
        abort(401, 'This action is unauthorized.');
    }

    public function hasAnyRole($roles)
    {
        if (is_array($roles)) {
            foreach ($roles as $role) {
                if ($this->hasRole($role)) {
                    return true;
                }
            }
        } else {
            if ($this->hasRole($roles)) {
                return true;
            }
        }
        return false;
    }

    public function hasRole($role)
    {
        if ($this->roles()->where('name', $role)->first()) {
            return true;
        }
        return false;
    }
};

在我试图上传图像之前,用户crud一直工作得很好,它在phpmyadmin中告诉我,图像已经上传,但是在公共文件或存储中没有保存任何图像--我想我有一个控制器错误,但我不知道在哪里。当我试图显示用户的图像时,它会给我一个错误:未定义的属性: Illuminate\Pagination\LengthAwarePaginator::$image,我如何调整以使这个上传的用户图像没有错误的显示?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-02 03:05:46

在您的UserControllerstore方法中

改变这个

代码语言:javascript
复制
$destinationPath = 'images/';

代码语言:javascript
复制
$destinationPath = public_path('images/');

同时,在view/superadmin/user/index.blade.php

改变这个

代码语言:javascript
复制
<td> <img src="/images/{{ $users->image }}" width="100px"></td>

代码语言:javascript
复制
<td> <img src="/images/{{ $user->image }}" width="100px"></td>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73575034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档