我正在尝试更新已登录用户的个人资料。我想创建一个功能,该用户在他/她想要更新或编辑他/她自己的个人资料时已登录。所以我没有错。但问题是它不会更新,它只是刷新我的浏览器但没有任何反应。
这是我控制器上的代码
public function edit($id)
{
// $applicant = $this->applicantRepository->findWithoutFail($id);
$applicant = Applicant::where('id',$id)->get()->last();
if (empty($applicant)) {
Flash::error('Applicant');
return redirect(route('applicant.home'));
}
return view('applicant-dashboard.edit')->with('applicant', $applicant);
}
public function update($id, UpdateApplicantRequest $request)
{
$applicant = $this->applicantRepository->findWithoutFail($id);
if (empty($applicant)) {
Flash::error('Applicant not found');
return redirect(route('applicant.home'));
}
$input = $request->all();
$applicant = $this->applicantRepository->update([
'name' => $input['name'],
'address' => $input['address'],
'cellphone_no' => $input['cellphone_no']], $id);
Flash::success('Profile updated successfully.');
return redirect(route('applicant.edit'));
}
以下是我的路线中的代码:
Route::get('/edit/{id}', 'HomeController@edit')->name('applicant.edit');
Route::post('/update', 'HomeController@update')->name('applicant.update');
以下是我的观点中的代码:
edit.blade.php
@extends('applicant-dashboard.layouts.app')
@section('content')
<section class="content-header">
<h1>
Applicant Profile
</h1>
</section>
<div class="content">
{{-- @include('adminlte-templates::common.errors') --}}
<div class="box box-primary">
<div class="box-body">
<div class="row" style="padding-left: 20px">
{!! Form::model($applicant, ['route' => ['applicant.update', $applicant->id], 'method' => 'post']) !!}
@include('applicant-dashboard.fields')
{!! Form::close() !!}
</div>
</div>
</div>
</div>
@endsection
并在 fields.blade.php
中{!! Form::hidden('id', null, ['class' => 'form-control input-sm','required']) !!}
<!-- Name Field -->
<div class="row" style="padding-right: 15px">
<div class="form-group col-sm-4">
{!! Form::label('name', 'Name:') !!}
{!! Form::text('name', null, ['class' => 'form-control input-sm','required']) !!}
</div>
</div>
<div class="row" style="padding-right: 15px">
<!-- Address Field -->
<div class="form-group col-sm-4">
{!! Form::label('address', 'Address:') !!}
{!! Form::text('address', null, ['class' => 'form-control input-sm','required']) !!}
</div>
</div>
<!-- Cellphone Field -->
<div class="row" style="padding-right: 15px">
<div class="form-group col-sm-4">
{!! Form::label('cellphone_no', 'Cellphone:') !!}
{!! Form::text('cellphone_no', null, ['class' => 'form-control input-sm','required']) !!}
</div>
</div>
<div class="row" style="padding-right: 15px">
<!-- Submit Field -->
<div class="form-group col-sm-12">
{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}
<a href="{!! route('applicant.home') !!}" class="btn btn-default">Cancel</a>
</div>
</div>
我的模型中的代码用于验证:
public static $rules = [
'name' => 'required',
'email' => 'required|unique:applicants',
'password' => 'required',
'password_confirmation' => 'required|same:password'
];
和 UpdateApplicantRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use App\Models\Applicant;
class UpdateApplicantRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Applicant::$rules;
}
}
我正在寻求帮助。 提前谢谢。
答案 0 :(得分:1)
可以有多种选择。首先,您需要确保创建正确的URL映射,其次,如果验证没有失败,第三,如果任何其他中间件正在重定向,例如用户未登录。
将更新方法的开头更改为
public function update($id, Request $request) {
dd($request->all());
如果没有看到dd()输出,则映射不正确。如果您看到验证失败。
检查php artisan route:list
并查看为此路由分配的中间件。
现在看来字段中缺少电子邮件和密码。通常,在创建和更新时,您有不同的验证规则。
另外,我建议您在模板中显示验证错误。