// A. olması gereken senaryoya göre (talep önce serviste düzenlenmeli ve düzenlenen talep içeriğine göre userrequest sınıfında doğrulanmalı) sınıflar ve metodları
/* UserController */
public function store(UserRequest $request)
{
$req = $this->form->extractEmptyPasswords($request);
return User::updateOrCreate(
['id'=>$req['id']],
$req // array comes from request->all()
);
}
/* UserRequest */
public function rules()
{
if(isset($this->id)){
// get rules to update a existing user
$rules = [
'name' => 'sometimes|required|string',
'email' => 'sometimes|required|unique:users,id,'.$this->id,
'password' => 'sometimes|required|min:6|confirmed',
];
}else{
// get rules to create a new user
$rules = [
'name' => 'required|string',
'email' => 'required|unique:users',
'password' => 'required|min:6|confirmed',
];
}
return $rules;
/* UserFormServices */
public function extractEmptyPasswords($request){
// if password field is empty
// extract password and password confirmation
// fields from the request
if(empty($request->password)){
$req = $request->except(['password','password_confirmation']);
}else{
// otherwise get all request fields
$req = $request->all();
}
return $req;
}
// B. UserRequest ile UserFormService işlem sıralamalarını yönetemediğim için etrafından dolandığım hali ile sınıflar ve metodları
/* UserController */
public function store(Request $request)
{
$req = $this->form->extractEmptyPasswords($request);
$rules = $this->form->getValidateRules($req);
$validator = Validator::make($req,$rules);
if($validator->fails()) dd($validator->errors());
return User::updateOrCreate(
['id'=>$req['id']],
$req // array comes from request->all()
);
}
/* UserFormService */
/**
* check if input contains the empty password
* and process accordingly to that
* @param object $request -Illuminate\Http\Request;
* @return object $req
*/
public function extractEmptyPasswords($request){
// if password field is empty
// extract password and password confirmation
// fields from the request
if(empty($request->password)){
$req = $request->except(['password','password_confirmation']);
}else{
// otherwise get all request fields
$req = $request->all();
}
return $req;
}
/**
* get the appropriate verification
* rules for the request
* @param object $req
* @return array $rules
*/
public function getValidateRules($req){
if(isset($req['id'])){
// get rules to update a existing user
$rules = [
'name' => 'sometimes|required|string',
'email' => 'sometimes|required|unique:users,id,'.$req['id'],
'password' => 'sometimes|required|min:6|confirmed',
];
}else{
// get rules to create a new user
$rules = [
'name' => 'required|string',
'email' => 'required|unique:users',
'password' => 'required|min:6|confirmed',
];
}
return $rules;
}