【发布时间】:2018-10-09 16:37:08
【问题描述】:
所以我能够提交表单以允许上传和更改头像。现在我也尝试允许更新所有用户详细信息。
如果我只是尝试更改用户名或电子邮件并提交,页面将重新加载原始内容。当我上传新头像然后尝试提交时,我收到错误“不应静态调用非静态方法 Illuminate\Http\Request::input()”。
*edited*** 我刚刚意识到我说如果用户上传图像然后更新表单。而我希望表单提交是否已上传图像。我该如何更改我的 update_avatar 函数才能使其正常工作?
web.php
Route::get('profile','userController@profile');
Route::post('profile', 'userController@update_avatar');
用户控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use Image;
class UserController extends Controller
{
//
public function profile()
{
return view('profile', array('user' => Auth::user()) );
}
public function update_avatar(Request $request)
{
if($request->hasFile('avatar')){
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300,300)->save( public_path('/uploads/avatars/' . $filename) );
$user = Auth::user();
$user->avatar = $filename;
$user->name = Request::input('username');
$user->email = Request::input('email');
$user->save();
}
return view('profile', array('user' => Auth::user()) );
}
}
profile.blade.php
<img src="/uploads/avatars/{{ $user->avatar }}" style="width:150px;height:150px;float:left;border-radius:50%;margin-right:25px">
<h2>{{ $user->name }}'s Profile</h2>
<form enctype="multipart/form-data" action="/profile" method="post">
<label>Update Profile Image</label>
<input type="file" name="avatar">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<label>Username</label>
<input type="text" name="username" class="form-control" value="{{ $user->name }}">
<label>Email</label>
<input type="email" name="email" class="form-control" value="{{ $user->email }}">
<input type="submit" class=" btn btn-sm btn-light" style="color:#2b2b2b;">
</form>
【问题讨论】: