在laravel 5.4中,一种形式有效,而另一种形式无效

时间:2019-02-26 01:21:20

标签: php laravel laravel-5 eloquent

我有一个UserController,其中有两个选项-

1)用于更新配置文件

2)用于更新密码

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use App\User;
use Auth;
use Hash;

class UserController extends Controller
{
    public function profile(){
        return view('profile', array('user' => Auth::user()));
    }

    public function update_avatar(Request $request){
        if(isset($request->avatar) && $request->avatar->getClientOriginalName()){
            $ext = $request->avatar->getClientOriginalExtension();
            $file = date('YmdHis').rand(1,99999).'.'.$ext;
            $request->avatar->storeAs('public/avatar',$file);

        }
        else
        {
            $user = Auth::user();
            if(!$user->avatar)
                $file = '';
            else
                $file = $user->avatar;
        }
        $user = Auth::user();
            $user->avatar = $file;
            $user->name = $request->name;
            $user->email = $request->email;
            $user->mb_number = $request->mb_number;
            $user->home_town = $request->home_town;
            $user->save();

        return view('profile', array('user' => Auth::user()));

    }

    public function update_password(Request $request){
        $user = Auth::user();
        if(Hash::check(Input::get('old_password'), $user['password']) && Input::get('new_password') == Input::get('confirm_new_password')){
            $user->password = bcrypt(Input::get('new_password'));
            $user->save();
        }
        return view('profile', array('user' => Auth::user()));
    }

}

在我的视图刀片中,我有两种形式-

  1. update_avatar,用于更新个人资料,例如姓名,电话号码和头像。
  2. update_password用于更新密码。

                                                   

            </div>
            <div class="widget-user-image">
              <img class="img-circle" src="{{ asset('public/storage/avatar/'.$user->avatar) }}" alt="User Avatar">
    
            </div>
            <div class="box-footer">
              <div class="row">
                <div class="col-sm-4 border-right">
                  <div class="description-block">
                    <h5 class="description-header">{{ $user->email }}</h5>
                    <span class="description-text">Email</span>
                  </div>
                  <!-- /.description-block -->
                </div>
                <!-- /.col -->
                <div class="col-sm-4 border-right">
                  <div class="description-block">
                    <h5 class="description-header">{{ $user->name }}</h5>
                    <span class="description-text">{{ $user->home_town }}</span>
                  </div>
                  <!-- /.description-block -->
                </div>
                <!-- /.col -->
                <div class="col-sm-4">
                  <div class="description-block">
                    <h5 class="description-header">{{ $user->mb_number }}</h5>
                    <span class="description-text">Phone No.</span>
                  </div>
                  <!-- /.description-block -->
                </div>
                <!-- /.col -->
              </div>
              <!-- /.row -->
            </div>
            <!--
            <div class="box-footer no-padding">
              <ul class="nav nav-stacked">
                <li><a href="#">Projects <span class="pull-right badge bg-blue">31</span></a></li>
                <li><a href="#">Tasks <span class="pull-right badge bg-aqua">5</span></a></li>
                <li><a href="#">Completed Projects <span class="pull-right badge bg-green">12</span></a></li>
                <li><a href="#">Followers <span class="pull-right badge bg-red">842</span></a></li>
              </ul>
            </div>
            -->
          </div>
          </div>
    
              <section class="content">
                <div class="container-fluid">
                    <form action="/profile" enctype="multipart/form-data" method="POST">
                        <div class="form-group">
                            <div class="form-group">
                                <label for="name">Name</label>
                                <input type="text" name="name" class="form-control" id="name" placeholder="Title" value="{{$user->name}}">
                            </div>
                            <div class="form-group">
                                <label for="email">Email</label>
                                <input type="text" name="email" class="form-control" id="email" placeholder="Description" value="{{$user->email}}" readonly>
                            </div>
                            <div class="form-group">
                                <label for="mb_number">Mobile No.</label>
                                <input type="text" name="mb_number" class="form-control" id="mb_number" placeholder="Schedule" value="{{$user->mb_number}}">
                            </div>
                            <div class="form-group">
                                <label for="home_town">Home Town</label>
                                <input type="text" name="home_town" class="form-control" id="home_town" placeholder="Deadline" value="{{$user->home_town}}">
                            </div>
                            <div class="form-group">
                                <label>Update Profile Image</label>
                                <input type="file" name="avatar">
                                @if($user->avatar)
                                <img src="{{ asset('public/storage/avatar/'.$user->avatar) }}" style="width:150px;">
                                @endif
                            </div>
                        <input type="hidden" name="_token" value="{{ csrf_token() }}"
                        <a href="" type="submit" class="btn btn-info"></a>
                        <button type="submit" class="btn btn-primary">Update</button>
                    </div>
                </div>
    </section>
    
    <section class="content">
                <div class="container-fluid">
                    <form action="/profile" enctype="multipart/form-data" method="POST">
                        <div class="form-group">
                            <div class="form-group">
                                <label for="old_password">Old Password</label>
                                <input type="password" name="old_password" class="form-control" id="old_password" placeholder="Old Password">
                            </div>
                            <div class="form-group">
                                <label for="new_password">New Password</label>
                                <input type="password" name="new_password" class="form-control" id="new_password" placeholder="New Password">
                            </div>
                            <div class="form-group">
                                <label for="confirm_new_password">Confirm New Password </label>
                                <input type="password" name="confirm_new_password" class="form-control" id="confirm_new_password" placeholder="Confirm New Password">
                            </div>
                        <input type="hidden" name="_token" value="{{ csrf_token() }}"
                        <a href="" type="submit" class="btn btn-info"></a>
                        <button type="submit" class="btn btn-primary">Update Password</button>
                    </div>
                </div>
    </section>
    

update_password函数运行正常,但update_avatar函数未运行,也没有显示任何错误。我已经尝试过dd($ user),但仍然没有将输出提供给dd。

1 个答案:

答案 0 :(得分:0)

检查一下,我用缩进和正确的关闭来更新了表格,也请将个人资料头像重定向到不同的URL,以便它可以访问不同的方法:-

我建议您使用https://laravelcollective.com/docs/5.4/html,通过使用表单集合,可以更轻松地实现更复杂的表单结构。

在途中,

Route::post('/profile_avatar',"UserController@update_avatar");   
Route::post('/profile_password',"UserController@update_password");

在Blade中,

 <section class="content">
        <div class="container-fluid">
            <form action="/profile_avatar" enctype="multipart/form-data" method="POST">
                <div class="form-group">
                    <div class="form-group">
                        <label for="name">
                            Name
                        </label>
                        <input class="form-control" id="name" name="name" placeholder="Title" type="text" value="{{$user->name}}">
                        </input>
                    </div>
                    <div class="form-group">
                        <label for="email">
                            Email
                        </label>
                        <input class="form-control" id="email" name="email" placeholder="Description" readonly="" type="text" value="{{$user->email}}">
                        </input>
                    </div>
                    <div class="form-group">
                        <label for="mb_number">
                            Mobile No.
                        </label>
                        <input class="form-control" id="mb_number" name="mb_number" placeholder="Schedule" type="text" value="{{$user->mb_number}}">
                        </input>
                    </div>
                    <div class="form-group">
                        <label for="home_town">
                            Home Town
                        </label>
                        <input class="form-control" id="home_town" name="home_town" placeholder="Deadline" type="text" value="{{$user->home_town}}">
                        </input>
                    </div>
                    <div class="form-group">
                        <label>
                            Update Profile Image
                        </label>
                        <input name="avatar" type="file">
                            @if($user->avatar)
                            <img src="{{ asset('public/storage/avatar/'.$user->avatar) }}" style="width:150px;">
                                @endif
                            </img>
                        </input>
                    </div>
                    <input <a="" class="btn btn-info" href="" name="_token" type="submit" value="{{ csrf_token() }}"/>
                </div>
                <button class="btn btn-primary" type="submit">
                    Update
                </button>
            </form>
        </div>
    </section>
    <section class="content">
        <div class="container-fluid">
            <form action="/profile_password" enctype="multipart/form-data" method="POST">
                <div class="form-group">
                    <div class="form-group">
                        <label for="old_password">
                            Old Password
                        </label>
                        <input class="form-control" id="old_password" name="old_password" placeholder="Old Password" type="password">
                        </input>
                    </div>
                    <div class="form-group">
                        <label for="new_password">
                            New Password
                        </label>
                        <input class="form-control" id="new_password" name="new_password" placeholder="New Password" type="password">
                        </input>
                    </div>
                    <div class="form-group">
                        <label for="confirm_new_password">
                            Confirm New Password
                        </label>
                        <input class="form-control" id="confirm_new_password" name="confirm_new_password" placeholder="Confirm New Password" type="password">
                        </input>
                    </div>
                    <input <a="" class="btn btn-info" href="" name="_token" type="submit" value="{{ csrf_token() }}"/>
                </div>
                <button class="btn btn-primary" type="submit">
                    Update Password
                </button>
            </form>
        </div>
    </section>