Php 在laravel中跨多个控制器具有公共验证功能

Php 在laravel中跨多个控制器具有公共验证功能,php,model-view-controller,laravel-5,Php,Model View Controller,Laravel 5,努力学习拉威尔 我有一个用户表单,可以发布到这条路线 Route::post('users/add','usersController@store')->middleware('admin'); usersController中的store函数调用另一个名为validateForm的函数,该函数基本上验证表单中的输入,如下所示 class usersController extends Controller { /* *Store a user in database */ funct

努力学习拉威尔

我有一个用户表单,可以发布到这条路线

Route::post('users/add','usersController@store')->middleware('admin');
usersController中的store函数调用另一个名为validateForm的函数,该函数基本上验证表单中的输入,如下所示

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进行访问了,但是如果我有另一个控制器,比如projectsController,我想访问相同的功能,即validateForm,该怎么办


我应该把这个公共函数放在哪里,如何从任何控制器访问它

Laravel内置的解决方案是

只需使用
php artisan make:request UserCheck
创建一个表单请求,并将验证规则放入方法
rules

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */

public function rules() {
    return [
       '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',

    ]; }
叫它

/*
 * Store a user in database
 */
public function store(UserCheck $request)
{
    // The incoming request is valid...
}