2016-07-10 34 views
0

嘿,伙计们,我试图让这个表单更新我的users table,但我不知道如何在laravel中完成。这里是我的形式如何从表单laravel更新表格5.1

<form method="POST" action="/profile/update"> 
    <div class="form-group hidden"> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
     <input type="hidden" name="id" value="<?php echo $user->id;?>"> 
     <input type="hidden" name="_method" value="PATCH"> 
    </div> 
    <div class="form-group"> 
     <label for="email"><b>Name:</b></label> 
     <input type="text" name="name" placeholder="Please enter your email here" class="form-control" value="<?php echo $user->name;?>"/> 
    </div> 
    <div class="form-group"> 
     <label for="email"><b>Email:</b></label> 
     <input type="text" name="email" placeholder="Please enter your email here" class="form-control" value="<?php echo $user->email;?>"/> 
    </div> 
    <div class="form-group"> 
     <button type="submit" class="btn btn-default"> Submit </button> 
    </div> 
</form> 

这里是我的控制器

<?php 

namespace App\Http\Controllers; 

use Auth; 
use App\User; 
use Illuminate\Http\Request; 

use App\Http\Controllers\Controller; 

class ProfileController extends Controller 
{ 
    /** 
    * Update user profile & make backend push to DB 
    **/ 

    public function index() { 

     // connecting to the DB and accessing 
     $user = Auth::user(); 
     //var_dump($user); 
     return view('profile', compact('user')); 

    } 

    public function update(Request $request) { 

     $request->only('name','email'); 
     return back(); 
    } 
} 

update method将处理输入,但林不知道从这里做。

感谢所有帮助

回答

0

第一关:我不建议echo荷兰国际集团的$user属性。使用刀片语法,例如{{ $user->id }}。为了安全起见,当您使用此语法时,Laravel Blade会转义您的值。

有关创建模型的更多信息,请查看Laravel documentation on inserting & creating models

从本质上讲,你会想要做的是沿着这一线的东西:

public function update(Request $request) { 

    $input = $request->only('name','email'); 

    $user = Auth::user(); // Fetch the user model 

    // Update the fields 
    $user->name = $input['name']; 
    $user->email = $input['email']; 

    // Save changes 
    $user->save(); 

    return back(); 
} 
+0

所以让我得到这个直。对于最佳实践,我只是将所有这些数据传递给模型? –

+0

通常会事先进行一些验证,或者[在控制器方法本身内](https://laravel.com/docs/5.1/validation#quick-writing-the-validation-logic)或使用[表单请求验证](https: //laravel.com/docs/5.1/validation#form-request-validation)。关于更新记录,有两种做法,但[请查看此视频](https://laracasts.com/series/laravel-5-from-scratch/episodes/10)。 – Joseph