Retire imagen de perfil de subida y restablecer la imagen por defecto en el tema laravel

Volka Dimitrev:

Tengo un formulario de actualización de usuario con un usuario foto. Actualmente estoy ahorrando mi foto de usuario (nombre de archivo) en la columna de propic de mi tabla de usuario.

El problema

Estoy intentando añadir un botón de la fotografía quitar cuando un usuario quiere quitar la imagen cargada. Una vez que el usuario haga clic en propic necesidad valor de la columna Eliminar foto botón de usuario que se reajusta los valores por defecto (usuario-photo.png). Y necesito mostrar que botón de eliminación de fotos sólo para los usuarios que han actualizado sus fotos de perfil. Los usuarios con perfil predeterminado foto no necesitan la opción.

Lo que he hecho hasta ahora

Esta es mi forma, en la hoja de usuario

<form action="{{ route('settings.update',$user->id) }}" method="POST" enctype="multipart/form-data">
            <div class="row mt-5">
                <div class="col-sm-3">
                    <img src="/propics/{{$user->propic}}" alt="Profile Pic" id="profile_pic_display" class="mb-3">
                    <input type="file" name="propic" class="form-control"> 
                    @error('propic')
                    <span class="help-block" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                    @enderror
                </div>
                <div class="col-sm-9">
                <!-- <form action="{{ route('settings.update',$user->id) }}" method="POST"> -->
                    @csrf
                    @method('PUT')
                    <div class="row">
                        <div class="col-md-6">

                            <div class="form-group field-user-firstname required">
                                <label class="control-label"
                                       for="user-firstname">{{ __('sentence.First Name') }}</label>
                                <input id="name" type="text" class="form-control @error('name') is-invalid @enderror"
                                       name="name" value="{{$user->name}}" autocomplete="name" autofocus>

                                @error('name')
                                <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror

                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group field-user-lastname required">
                                <label class="control-label" for="user-lastname">{{ __('sentence.Last Name') }}</label>
                                <input id="last_name" type="text"
                                       class="form-control @error('name') is-invalid @enderror" name="last_name"
                                       value="{{$user->last_name}}" autocomplete="last_name" autofocus>

                                @error('name')
                                <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group field-user-mobile required">
                                <label class="control-label" for="user-mobile">{{ __('sentence.Mobile') }}</label><br/>
                                <input id="mobile_1" type="tel"
                                       class="form-control @error('mobile') is-invalid @enderror" name="mobile"
                                       value="{{$user->mobile}}" style="min-width:398px;" autocomplete="mobile"
                                       autofocus>

                                @error('mobile')
                                <span class="help-block" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="col-md-6">
                            <div class="form-group field-user-email required">
                                <label class="control-label" for="user-email">{{ __('sentence.Email') }}</label>
                                <input id="email_" type="email"
                                       class="form-control @error('email') is-invalid @enderror" name="email"
                                       value="{{$user->email}}" autocomplete="email">

                                @error('email')
                                <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                    </div>
                    <div class="row">
                        <div class="col-sm">
                            <div class="form-group pull-right">
                                <button type="submit"
                                        class="btn btn-default">{{ __('sentence.Cancel') }}</button>
                                <button type="submit"
                                        class="btn btn-default subscribe px-5">{{ __('sentence.Update') }}</button>
                            </div>
                        </div>
                    </div>
                </div>

        </form> 

Y la siguiente es mi controlador (Sólo se incluye la función de actualización)

public function update(Request $request, User $setting)
        {

            $changedAttributes = array_diff($request->all(), $setting->getAttributes());

            $validationRules = array_intersect_key([
               'name'      => ['required', 'alpha','min:2', 'max:255'],
               'last_name' => ['required', 'alpha','min:5', 'max:255'],
               'mobile'    => ['required', 'numeric','min:9','regex:/\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
               2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
               4[987654310]|3[9643210]|2[70]|7|1)\d{1,14}$/'],
               'email'     => ['required', 'string', 'email', 'max:255', 'unique:users,email,'.$setting->id.''],
               'propic' => ['required','image','mimes:jpeg,png,jpg,gif,svg','max:2048'],
           ], $changedAttributes);

           if($request->hasFile('propic'))
           {
                $this->validate($request, [
                    'name' => ['required', 'alpha','min:2', 'max:255'],
                    'last_name' => ['required', 'alpha','min:5', 'max:255'],
                    'mobile' => ['required', 'numeric','min:9','regex:/\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|3[70]|7|1)\d{1,14}$/'],
                    'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,'.$setting->id.''],
                    'propic' => ['required','image','mimes:jpeg,png,jpg,gif,svg','max:2048'],
                ],$request->all());

                $imageName = time().'.'.$request->propic->extension();  
                $request->propic->move(public_path('propics'), $imageName);
                $setting->propic=$imageName;
                $setting->name=$request->input('name');
                $setting->last_name=$request->input('last_name');
                $setting->mobile=$request->input('mobile');
                $setting->email=$request->input('email');
                $setting->update();
                return Redirect::back()->with('success',__('sentence.User updated successfully'));  
           }

           $this->validate($request, $validationRules);

           $setting->update($changedAttributes);

           return Redirect::back()->with('success',__('sentence.User updated successfully'));  

        }

}
Bacca001:

En primer lugar es necesario comprobar, en su opinión, si el perfil de usuario foto no es "user-photo.png" y si es verdad insertar un botón de reinicio de la foto:

@if($user->propic != 'user-photo.png')
    <button type="submit" name="resetphoto" class="btn btn-warning">Reset Profile Pic</button>
@endif

Luego, en su controlador en el comienzo de la actualización de verificación método () si el usuario ha hecho clic en "Restablecer foto de perfil" botón, y luego, si es cierto conjunto de la parte posterior de la columna valor predeterminado, a continuación, guardar el modelo

if ($request->has('resetphoto')){
    $setting->propic = 'user-photo.png';
    $setting->update();
    return Redirect::back()->with('success',__('sentence.User profile pic reset successfully'));
}

PS: Im suponiendo que su "entorno $" es el modelo de Usuario

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=387705&siteId=1
Recomendado
Clasificación