this is my update function in usercontroller
public function update_user_credentials(UpdateUserRequest $request)
{
$user = User::find($request->user()->id);
if(!$user)
{
return response('User not found', 404);
}
try
{
$data=Input::all();
$user->fill($data);
var_dump($user);
exit;
$user->save();
}
catch(Exception $ex)
{
return response($ex->getMessage(),400);
echo Success::get('message');
}
return Redirect::back()->with('message','updated');
}
my UpdateUserRequest.php
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class UpdateUserRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'first_name' =>'required',
'last_name'=>'required',
'url'=>'url',
'password'=>'min:6|confirmed',
'password_confirmation'=>'min:6',
'email'=>'email|unique:users,email',
];
}
}
Each column has its own form. So updating email has its own form as does password.
When I'm updating without putting UpdateUserRequest inside my update controller, it works fine. But when I add that in for validations, nothing happens. I get a 302 error but I don't any messages.
I tried getting msgs with validator->messages but also got nothing.
Also if I put in
protected $redirect = '/'
I do get redirected. That means validation is working right?
here are my routes if it helps:
Route::get('/account/email',function(){
$user=Request::user();
$id = $user->id;
return Response::view('user.edit.email', compact('user'));
});
Route::patch('/account/update','UserController@update_user_info');
Update So I figured out how to display error messages and one of them was that 'first name and last name were required'. But now I get this error when I try updating
ErrorException in UserController.php line 93:
Missing argument 2 for App\Http\Controllers\UserController::update_user_credentials()
in UserController.php line 93
at HandleExceptions->handleError('2', 'Missing argument 2 for App\Http\Controllers\UserController::update_user_credentials()', '/Users/Jack/projects/makersBrand/laravel/app/Http/Controllers/UserController.php', '93', array('request' => object(UpdateUserRequest))) in UserController.php line 93
at UserController->update_user_credentials(object(UpdateUserRequest))
at call_user_func_array(array(object(UserController), 'update_user_credentials'), array(object(UpdateUserRequest))) in Controller.php line 256
at Controller->callAction('update_user_credentials', array(object(UpdateUserRequest))) in ControllerDispatcher.php line 164
at ControllerDispatcher->call(object(UserController), object(Route), 'update_user_credentials') in ControllerDispatcher.php line 112
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack(object(UserController), object(Route), object(Request), 'update_user_credentials') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\UserController', 'update_user_credentials') in Route.php line 201
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
Does that mean '2' is being passed into validations?
I think your validation rule will not work. If you update your data your validation rule also check the same row which you are updating.What I am trying to say is that suppose you are trying to update the row having id 2 , then when you doing the validation your validation rule also check the row having id 2 for uniqueness for email.Suppose you didn't update your email , then while validating your validation rule will check all row and it will not find the email unique and it should display the error.
Your route must be
Route::post('/account/update/{id}','UserController@update_user_info');
While updating your rules must check all row except the row that you are updating.You can apply the same rule to create and to update the data like this
public function rules(){
return [
'first_name' =>'required',
'last_name'=>'required',
'url'=>'url',
'password'=>'min:6|confirmed',
'password_confirmation'=>'min:6',
// you need to change here
'email'=>'email|unique:users,email,'.$this->route()->getParameter('id').',database_id'
];
// database_id means your table primary key column i.e id
}
I think your update function must look something like this
public function update_user_credentials(Requests\UpdateUserRequest $request,$id){
// code
}