我设法在个人资料视图中检索并显示Auth用户个人资料详细信息,但我遗漏了一些事情(或一些事情)来进行实际更新。
你能帮忙吗?
profile.blade.view
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">Update your user profile</div>
<div class="panel-body">
{!! Form::open(array('action' => array('HomeController@postProfileEdit', $user->id))) !!}
<div class="form-group">
{!! Form::label('firstName', 'First name:') !!}
{!! Form::text('firstName', $userinfo->first_name, ['class' => 'form-control']) !!}
{!! Form::label('lastName', 'Last name:') !!}
{!! Form::text('lastName', $userinfo->last_name, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit('Update', ['class'=>'btn primary']) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
routes.php文件
Route::get('profile', 'HomeController@profile');
Route::post('profile', 'HomeController@postProfileEdit');
HomeController.php - 个人资料()
/**
* Show the application user profile to the user.
*
* @return Response
*/
public function profile()
{
$user = Auth::user();
$userinfo = \Auth::user();
return view('profile')->with(['user' => $user])->with('userinfo', $userinfo);
}
HomeController.php - postProfileEdit(Request $ request)
/**
* Store updates to user profile.
*
* @return Response
*/
public function postProfileEdit(Request $request)
{
$userinfo = Request::all();
$user = new User;
$user->exists = true;
$user->id = Auth::user();
$user->first_name = $userinfo['firstName'];
$user->save();
return redirect()->action('HomeController@profile');
//return Response::make('Your user profile was updated successfully!');
}
requests.php - 用于验证
abstract class Request extends FormRequest {
/**
* The URI to redirect to if validation fails
*
* @var string
*/
protected $redirect = 'users/create';
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'firstName' => 'required|min:3',
'lastName' => 'required|min:3'
];
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
}
我得到了:
HomeController.php第170行中的FatalErrorException:Class&#39; App \ Http \ Controllers \ updateProfile&#39;找不到
我知道$ updateProfile = new updateProfile;
行是错的,我不确定是什么问题。
希望这是有道理的。
更新
我在HomeController.php中将类从updateProfile更改为User(我正在进行更改的模型的名称)
现在我收到以下消息:
HomeController.php第174行中的ErrorException:未定义的变量:userinfo
我不确定我是否可以使用profile.blade.view中的userinfo(见上文)。
更新
我能够通过修复使其工作(或不会出错) HomeController @ postProfileEdit(post),完成后返回HomeController @ profile(get)。但显然,保存没有完成,因为即使我更改了first_name值,当我返回HomeController @ profile(其中检索并显示first_name)时它保持不变。
答案 0 :(得分:2)
Class 'App\Http\Controllers\updateProfile' not found
此错误表示Laravel正在当前的 App \ Http \ Controllers 命名空间中查找 updateProfile 类,但无法找到它。我想该类位于不同的命名空间中,因此您需要在HomeController文件的开头添加 use 语句,例如:
<?php
namespace App\Http\Controllers;
use Some\Namespace\updateProfile;
答案 1 :(得分:1)
以@ jedrzej.kurylo的回答为基础。
我必须假设updateProfile
是在app
目录中找到的雄辩模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class updateProfile extends Model {
...
}
请注意文件顶部的namespace
声明?接下来,考虑名称空间HomeController.php
文件:
namespace App\Http\Controllers;
默认情况下,在Laravel中构建类时,它会查找您正在使用的控制器的当前名称空间。在这种情况下,它试图找到updateProfile
命名空间中的一个类App\Http\Controllers
,我们知道它并不存在。
有两种方法可以完成您尝试做的事情。首先,在您的控制器顶部使用use
语句,为您提供的每个Model
。
use App\updateProfile;
...
其次,在声明类时指定名称空间:
$updateProfile = new \App\updateProfile;
任何一种方法都应该为你清除错误。