Функция обновления Laravel () не обновляет поля - PullRequest
0 голосов
/ 09 ноября 2019

Итак, я изменил свою таблицу User по умолчанию на таблицу под названием «customusers», куда будут отправляться все данные для зарегистрированных пользователей. Данные включают имя / адрес электронной почты / пол / описание и т. Д. Когда они регистрируются, они перенаправляются на главную страницу, где печатаются все их данные. Теперь, если они хотят редактировать эти данные, они нажимают кнопку «Редактировать», после чего они переходят на страницу с именем «Edit.blade.php», они редактируют свои учетные данные и нажимают кнопку «Обновить». Все до сих пор работает на меня. Но когда они нажимают «Обновить», он просто возвращает их на главную страницу, но ничего не обновляет. Изменения не сохранены. Ниже приведен мой код:

Display.blade.php (главная страница):

<div id="wrapper">

<div id="content">
  <div id="card">
    <div id="front">
      <div id="top-pic"></div>
    <div id="avatar"><span style="position: absolute;padding-top: 17px;margin-left: 34px;color:  #fff;font-size:  64px;" class="h5">
        {{ Auth::user()->name[0] }}
    </span></div>
      <div id="info-box">
        <div class="info">
          <h1>{{ Auth::user()->name }}</h1>
          <h2>{{ Auth::user()->message }}</h2>
        </div>
      </div>
      <div id="social-bar">
        <a href="{{ Auth::user()->facebook }}" target="_blank">
          <i class="fa fa-facebook"></i>
        </a>
        <a href="{{ Auth::user()->twitter }}" target="_blank">
        <i class="fa fa-twitter"></i>
        </a>

        {{ link_to_route('display.edit','',[Auth::user()->id],['class'=>'fa fa-edit']) }}

      </div>
    </div>

Edit.blade.php :

{!! Form::model(Auth::user(),array('route'=>['display.update',Auth::user()->id],'method'=>'PUT')) !!}
            <div class="form-group">
                    {!! Form::text('name',null,['class'=>'form-control','placeholder'=>'Name']) !!}
             </div>
            <div class="form-group">
                    {!! Form::email('email',null,['class'=>'form-control','placeholder'=>'Email']) !!}
            </div>
                <div class="form-group form-row">
                        <div class="col-5">
                                {!! Form::select('gender', ['Male' => 'Male', 'Female' => 'Female'], null, ['class'=>'form-control','placeholder'=>'Choose Gender']); !!}
                        </div>
                        <div class="col">
                                {!! Form::text('facebook',null,['class'=>'form-control','placeholder'=>'Facebook ID']) !!}
                        </div>
                        <div class="col">
                                {!! Form::text('twitter',null,['class'=>'form-control','placeholder'=>'Twitter Handle']) !!}
                        </div>
                </div>
                <div class="form-group">
                        {!! Form::textarea('message',null,['class'=>'form-control','placeholder'=>'Talk about yourself']) !!}
                </div>
                <div class="form-group">
                        {!! Form::button('Update Profile',['type'=>'submit','class'=>'btn btn-danger col-lg-12']) !!}
                </div>
                {!! Form::close() !!}

ProfileController (контроллер ресурсов):

    class ProfileController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $customusers = DB::table('customusers')->get();
        return view ('display',compact('customusers'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
       //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * 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(CustomUser $customuser) 
    {
        $customuser = DB::table('customusers')->get();
        return view ('edit',compact('customuser'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, CustomUser $customuser)
    {
      $customuser->update($request->all());
        return redirect()->route('display.index');
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Web.php (маршруты):

 Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::resource('/display','ProfileController');

Поэтому, когда я нажимаю кнопку обновления, он просто перенаправляет меня обратно на display.blade.php (как и должно быть), но ни одно из изменений не сохраняется. Дайте мне знать, если вам нужно больше посмотреть мой код, спасибо заранее.

1 Ответ

0 голосов
/ 09 ноября 2019

Пожалуйста, dd($request->all()); для нас, когда вы нажмете метод обновления вашего контроллера.

Вы также можете сделать это для $ customUser одновременно, чтобы убедиться, что это правильная модель.

Опубликуйте результаты для меня, пожалуйста.

Я бы хотел убедиться, что ключи соответствуют заголовкам столбцов таблицы вашей БД. У меня также есть ощущение, что $ request-> all () будет включать ключ _token, и это может вызвать проблемы с обновлением. В таком случае вам нужно удалить _token из массива, и самый простой способ - создать новую переменную в виде массива и заполнить новый массив соответствующими именами столбцов таблицы в качестве ключей и их значениями в качестве связанного с ними вводазначения из запроса.

Обычно я просто использую $ request и передаю идентификатор модели вместе с запросом, тогда я сделаю что-то вроде этого:

$data =[];
$data['twitter'] = $request->get('twitter');

$customuser = Customuser::find($request->customeruserID);

$customeruser->update($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...