我在试着做一个用户crud。所有的工作都很好的用户这个创建,但我的问题是,当我上传一个个人资料的图像。
UserController
<?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
@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>
@endsectionview/superadmin/user/index.blde.php
@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模型
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,我如何调整以使这个上传的用户图像没有错误的显示?
发布于 2022-09-02 03:05:46
在您的UserController,store方法中
改变这个
$destinationPath = 'images/';至
$destinationPath = public_path('images/');同时,在view/superadmin/user/index.blade.php中
改变这个
<td> <img src="/images/{{ $users->image }}" width="100px"></td>至
<td> <img src="/images/{{ $user->image }}" width="100px"></td>https://stackoverflow.com/questions/73575034
复制相似问题