我似乎无法将更新后的个人资料保存到数据库中。
在我的edit.blade.php中:
{!! Form::model($user, ['method' => 'PATCH', 'route' => ['profile.update', $user->company_name] ]) !!}
// fields
{!! Form::submit('Update Profile', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
在我的个人资料控制器中:
public function update($company_name)
{
$user = User::whereCompanyName($company_name)->firstOrFail();
$user->save(); // no validation implemented
flash('You have successfully edited your profile');
return redirect('/');
}
点击更新按钮后,它会在主页上显示Flash消息,但它没有保存到数据库中。我来自Rails,我觉得我需要将某些内容列入白名单。
答案 0 :(得分:9)
重点是,您根本不需要更改用户模型...您可以检索它,然后再次保存它而不设置任何字段。
$user = User::whereCompanyName($company_name)->firstOrFail();
// this 'fills' the user model with all fields of the Input that are fillable
$user->fill(\Input::all());
$user->save(); // no validation implemented
如果您使用上述方法
$user->fill(\Input::all());
您必须向用户模型添加$ fillable数组,如
protected $fillable = ['name', 'email', 'password']; // add the fields you need
如果您明确只想设置一个或两个(或三个....)字段,则可以使用
更新它们$user->email = \Input::get('email'); // email is just an example....
$user->name = \Input::get('name'); // just an example...
...
$user->save();
如果你已经尝试过提供的anwer Sinmok,你可能会得到#34; whooops"页面,因为你使用
Input::get('field');
而不是
\Input::get('field');
在你的Blade语法中我假设你使用了laravel 5。 因此,当您的控制器是命名空间时,您必须在输入之前添加\以引用根命名空间(或在类的顶部放置一个use语句)
通常在开发服务器上,您应该启用调试。那么你有更多关于什么是错误的详细信息,而不仅仅是纯粹的......"呐喊......"
在config / app.php文件中,您可以设置
'debug' => true;
OR
你看看http://laravel.com/docs/5.0/configuration 并使用.env文件。
如果您使用.env文件,请确保存在类似
的条目APP_DEBUG=true
然后您可以使用
在config / app.php中访问该值'debug' => env('APP_DEBUG'),
您的安装中应该有一个.env.example,以便您了解此类文件的外观。
答案 1 :(得分:1)
您似乎未将提交值设置为用户对象。
尝试(更新此内容适用于Laravel 4)
$user = User::whereCompanyName($company_name)->firstOrFail();
$user->field = Input::get("some_field"); // Name of the input field here
$user->save(); // no validation implemented
flash('You have successfully edited your profile');
return redirect('/');
修改
实际上,如果您正在使用Laravel 5,它看起来应该是:
$user->field = Request::input('some_field'); // Name of the input field here
$user->save(); // no validation implementedenter code here
答案 2 :(得分:1)
UserController更新功能如下:-
public function update(Request $request)
{
$user = Auth::user();
$data = $this->validate($request, [
'name' => 'required',
'email' => 'required',
]);
$user->name = $data['name'];
$user->email = $data['email'];
$user->save();
return redirect('/user_edit/'.Auth::user()->id)->with('success', 'User has been updated!!');
}