Обновление отдельного поля в форме обновления профиля в Laravel 5 - PullRequest
1 голос
/ 12 апреля 2020

Я пытаюсь обновить одно поле в разделе формы моего профиля пользователя в приложении Laravel.

Я могу правильно сохранить поля в БД, но входные значения и заполнители принимают неправильные значения. При каждом нажатии Сохранить значения не меняются, и они берутся из последних перечисленных деталей профиля пользователя. В моем случае это пользователь № 3. Проблема в том, что когда я вхожу с учетными данными пользователя № 1, значение и заполнитель берутся у пользователя № 3. Когда я вхожу в систему с пользователем № 2, снова от пользователя № 3. Только значения пользователя # 3 являются правильными, и я могу манипулировать ими без проблем для обоих полей.

Когда я обновляю поля профиля пользователем # 1, он сохраняет введенное поле, но, поскольку 2-е поле наследует данные ввода пользователя № 3, он сохраняет его в поле 2 пользователя # 1, что делает неправильную запись , Я не могу оставить ноль в этих полях по умолчанию. Мое массовое задание защищено.

Как сохранить / обновить только одно поле в шаблоне блэйда, не затрагивая другие поля в форме?

Мои маршруты:

Route::get( '/profile', 'userController\\profileEdit@profileEdit')->name('profileEdit'); Route::post('/profile', 'userController\\profileEdit@update')->name('update');

Мой контроллер:

namespace App\Http\Controllers\userController;
use App\Model\Hause_users;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class profileEdit extends Controller
{
    function profileEdit (Request $request){

        $user = Hause_users::all();
        $name = $request->session()->get('name');

        $request->session()->keep([request('username', 'email')]);

       return view('frontview.layouts.profile',['user'=>$user])->with('username' , $name );
    }



    function update (Request $request){

        $user = Hause_users::where('username', $request->session()->get('name'))->first();
        $user->fill(['email' => request('Email')]) ;
        $user->save();


        $user->phone;
        //dd($user->phone->phone);

        if ($user->phone === null) {
            $user->phone->phone->create(['phone' => request('tel')]);
        }
        else{
            $user->phone->update(['phone' => request('tel')]);
        }
        return back()->withInput();
   }

Файл блейда: `

@extends('frontview.layouts.userView')
@extends('frontview.layouts.default')

@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif



@section('title')

@endsection

@section('content')

    @foreach($user as $v )


    @endforeach

    <h2 class="form-group col-md-6">Здравей, {{$username }} </h2>


    <form class = "pb2" method="POST" name = 'profile' action='profile'  >

        {{ csrf_field()}}
        <div class="form-row">
            <div class="form-group col-md-6">
                <label for="inputEmail4">Поща</label>
                <input type="email" class="form-control" name = "Email" id="inputEmail4"
                       value="{{$v['Email']}}"
                       placeholder="{{$v->Email}}">
            </div>
            <div class="form-group col-md-6">
                <label for="inputPassword4">Промени Парола</label>
                <input type="password" class="form-control" id="inputPassword4" placeholder="Парола">
            </div>
        </div>
        <div class="form-group">
            <label for="inputAddress">Address</label>
            <input type="text" class="form-control" name = "Adress"  id="inputAddress" placeholder="Снежанка 2">
        </div>

        <div class="form-row">
            <div class="form-group col-md-6">
            <label for="inputAddress">Телефон</label>
            <input class="form-control" type="text" name = 'tel' value="{{$v->phone['phone']}}"
                   placeholder="{{$v->phone['phone']}}"
                   id="example-tel-input" >
            </div>      
        </div>
        <div class="form-row">
            <div class="form-group col-md-6">
                <label for="inputCity">Град</label><input type="text" class="form-control" id="inputCity">
                <label for="inputCity">Квартал</label><input type="text" class="form-control" id="inputCity">
            </div>

            {{--<div class="col-md-6" >--}}
                {{--<label for="image">Качи снимка</label>--}}
                {{--<input type="file" name = "image">--}}
                {{--<div>{{$errors->first('image') }}</div>--}}
            {{--</div>--}}

        </div>      
                {{--<div ><img src="https://mdbootstrap.com/img/Photos/Others/placeholder-avatar.jpg"--}}
                         {{--class="rounded-circle z-depth-1-half avatar-pic" alt="example placeholder avatar">--}}
                {{--</div>--}}
                {{--<div class="d-flex justify-content-center">--}}
                    {{--<div class="btn btn-mdb-color btn-rounded float-left">--}}
                        {{--<span>Add photo</span>--}}
                        {{--<input type="file">--}}
                    {{--</div>--}}
                {{--</div>--}}
            {{--</div>--}}

        <div class="form-group">
            <div class="form-check">
                <input class="form-check-input" type="checkbox" id="gridCheck">
                <label class="form-check-label" for="gridCheck">
                    Запомни ме!
                </label>
            </div>
        </div>  

        <button type="submit" class="btn btn-primary">Запази</button>
    </form>
@endsection
@section('name')
    {{ $username }}
@endsection

Сводка по выводу :

На img # 1 указаны правильные данные. Это другой раздел, а не раздел редактирования профиля. В настоящее время зарегистрированный пользователь U # 1, но, как вы можете видеть на рисунке 2, значения и заполнитель обоих полей относятся к U # 3. Когда я нажимаю синюю кнопку, U # 1 сохраняет нетронутые поля ввода U # 3. То же самое происходит, когда я вхожу с U # 2.

Correct outputs

Profile edit secion

1 Ответ

0 голосов
/ 14 апреля 2020

На самом деле ответ здесь довольно прост. Что я делаю неправильно, так это то, что я не передаю значение текущего зарегистрированного пользователя в представление правильно. В моем методе profileEdit я использовал $user = Hause_users::all();, а затем зацикливал все id в представлении, а затем извлекал каждое поле. Но поскольку представление не знает, какой пользователь передает данные, foreach всегда возвращает последний идентификатор пользователя из массива со своими входными данными, независимо от того, какой пользователь в данный момент вошел в систему. Тогда данные были переопределены с неправильными входными данными. Решение также простое. Вместо $user = Hause_users::all(); я использовал $user = Hause_users::where('username', $request->session()->get('name'))->first();

, а затем, на мой взгляд, я возражал против переменной $ user без каких-либо циклов, подобных этому:

 <form class = "pb2" method="POST" name = 'profile' action='profile'  >
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        {{--<input type="hidden" name="_method" value="PATCH">--}}
        <div class="form-row">
            <div class="form-group col-md-6">
                <label for="inputEmail4">Поща</label>
                <input type="Email" class="form-control" name = "Email" id="inputEmail4"
                       value="{{$user->Email}}"
                       placeholder="{{$user->Email}}">
            </div>
            <div class="form-group col-md-6">
                <label for="inputPassword4">Промени Парола</label>
                <input type="password" class="form-control" id="inputPassword4" placeholder="Парола">
            </div>
        </div>
        <div class="form-group">
            <label for="inputAddress">Address</label>
            <input type="text" class="form-control" name = "Adress"  id="inputAddress" placeholder="Снежанка 2">
        </div>

        <div class="form-row">
            <div class="form-group col-md-6">
            <label for="inputAddress">Телефон</label>
            <input class="form-control" type="text" name = 'tel' value="{{$user->phone['phone']}}"
                   placeholder="{{$user->phone['phone']}}"
                   id="example-tel-input" >

По сути, это подробное объяснение все это не используя встроенную систему аутентификации Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...