我是laravel的新手,我正在尝试更新用户,但我被困在这里。当我按下更新按钮时它没有做任何事情......
//HomeController.php
public function getUpdate($username) {
$user = array();
$users = User::where("username", "=", $username)->get();
foreach ($users as $key => $value) {
if (isset($value->username)) {
$user['username'] = $value->username;
$user['email'] = $value->email;
$user['password'] = $value->password;
}
}
$username = (object) $user;
return View::make('home.update', array('username' => $username));
}
public function postUpdate($username) {
$input = Input::all();
$rules = array('username' => 'required|unique:users',
'email' => 'required|unique:users|email',
'password' => 'required'
);
$v = Validator::make($input, $rules);
if ($v->fails()) {
Redirect::to('home.update')
->withErrors($v)
->withInput(Input::except('password'));
} else {
$user = User::find($username);
$user->username = Input::get('username');
$user->email = Input::get('email');
$user->save();
return Redirect::to('home.index')
->with('message', 'Successfully updated!');
}
}
//view
@extends('master')
@section('content')
<div class="span12 well" style="opacity: 0.9">
<h4>Update personal details:</h4>
{{ Form::open(array('url' => 'update/'.Auth::user()->username.'/update')) }}
@if($errors->any())
<div class="alert alert-error">
<a href="#" class="close" data-dismiss="alert">×</a>
{{ implode('', $errors->all('<li class="error">:message</li>')) }}
</div>
@endif
<div class="form-group">
{{ Form::label('username', 'Username:') }}
{{ Form::text('username',$username->username, array('class' => 'form-control')) }}
</div>
<div class="form-group">
{{ Form::label('email', 'E-mail:') }}
{{ Form::text('email', $username->email, array('class' => 'form-control')) }}
</div>
<p>{{ Form::submit('Update', array('class' => 'btn btn-success'))}}</p>
{{ Form::close() }}
</div>
@stop
//routes
Route::get('update/{username}', 'HomeController@getUpdate');
Route::post('update/{username}/update', 'HomeController@postUpdate');
答案 0 :(得分:0)
试试这个:
改变这个:
{{ Form::open(array('url' => 'update/'.Auth::user()->username.'/update')) }}
分为:
{{ Form::open(array('url' => 'update/'.Auth::user()->id.'/update')) }}
您的路线必须是:
Route::post('update/{id}/update', 'HomeController@postUpdate');
你的控制器必须是:
public function postUpdate($id) { //I change this to id based on the url of your route
$input = Input::all();
$rules = array('username' => 'required|unique:users',
'email' => 'required|unique:users|email',
'password' => 'required'
);
$v = Validator::make($input, $rules);
if ($v->fails()) {
Redirect::to('home.update')
->withErrors($v)
->withInput(Input::except('password'));
} else {
$user = User::find($id); //User::find() only finds ID
$user->username = Input::get('username');
$user->email = Input::get('email');
$user->save();
return Redirect::to('home.index')
->with('message', 'Successfully updated!');
}
}