2
laravelの学習を手伝っています。laravelの複数コントローラにまたがって共通の検証機能がある
は私は
class usersController extends Controller
{
/*
*Store a user in database
*/
function store(){
$input=Request::all();
// create the validation rules ------------------------
$rules = array(
'name' => 'required', // just a normal required validation
'lastname' => 'required', // just a normal required validation
'email' => 'required|email|unique:users', // required and must be unique in the users table
'password' => 'required',
);
$validationResponse=$this->validateForm($input,$rules);
if($validationResponse=="passed"){
$user=new \App\User;
$user->name=$input['name'];
$user->email=$input['email'];
$user->lastname=$input['lastname'];
$user->password=\Hash::make($input['password']);
$user->userlevel=isset($input['isAdmin'])?1:0;
$user->save();
return redirect('users');
}
else{
return Redirect::to('users/create')
->withErrors($validationResponse)->withInput();
}
}
/*
*validate user form input
*/
function validateForm($input,$rules){
// do the validation ----------------------------------
// validate against the inputs from our form
$validator = Validator::make($input, $rules);
// check if the validator failed -----------------------
if ($validator->fails()) {
// get the error messages from the validator
$messages = $validator->messages();
return $messages;
}
else{
return 'passed';
}
}
}
ように、UserControllerにある状態ストア機能は、基本的にフォームからの入力を検証validateFormと呼ばれる別の関数を呼び出す
Route::post('users/add','[email protected]')->middleware('admin');
この経路に投稿するユーザーフォームを有します今これはuserControllerからのアクセスには問題ありませんが、別のコントローラにprojectsControllerと言うと、同じ関数、つまりvalidateFormにアクセスしたい場合はどうですか?
どこにこの共通の機能を置いて、どのコントローラからどのようにアクセスできますか?これに対する答えに建て