【问题标题】:Issue updating user account with avatar laravel使用头像 laravel 更新用户帐户的问题
【发布时间】: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>

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    修改代码

    $user->name = $request->input('username');
    $user->email = $request->input('email');
    

    请参阅文档了解更多信息:

    http://laravel.com/docs/5.0/controllers#dependency-injection-and-controllers

    【讨论】:

    • 然后我得到错误 命名空间声明语句必须是第一个语句或在脚本中的任何声明调用之后
    • 请详细说明...分享屏幕截图
    【解决方案2】:

    在控制器中命名空间声明的顶部, 替换如下

    use Illuminate\Http\Request;
    

    use Request;
    

    【讨论】:

    • 提交时出现错误 "Call to undefined method Illuminate\Support\Facades\Request::hasFile()" @akram
    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2017-02-02
    • 2015-05-13
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多