0

私の Laravel 5.1 アプリケーションには、RESTful API として機能するコントローラーがあります。このコントローラーの多くのメソッドには、次のコードがあります。

foreach (['email', 'password', 'firstName', 'lastName'] as $parameter) {
    if (!$this->request->has($parameter)) {
        throw new InputException(400, $parameter, 'Missing ' . $parameter . ' parameter.');
    }
}

同じコードを (異なる配列の内容で) 繰り返すのは最善の策ではないことはわかっています。代わりに、同じことを達成するためのエレガントな方法を探しています。

私は、routes.php で次のようなパラメーターを持つミドルウェアについて考えました。

'middleware' => 'parameters:email,password,firstName,lastName'

現在、私は暗黙のコントローラーを使用しているため、私のメソッドはroutes.phpファイルに記載されていません。

繰り返すことなくこの機能を実装する最も柔軟でエレガントな方法は何ですか?

4

2 に答える 2

0

私は、ミドルウェアが最良の選択肢になると思います。ミドルウェアは素晴らしいです。を使用してミドルウェアを作成するだけですphp artisan make:middleware SomeMiddlewareName

このコードをハンドル関数に入れます

public function handle($request, Closure $next)
{

    $data = array(
        'email' => $request->input('email'),
        'password' => $request->input('password'),
        'firstname' => $request->input('firstname'),
        'lastname' => $request->input('lastname'),
    );

    //Delete array fields that Have null or empty values
    $data = array_filter($data);

    if (sizeof($data) == 4) {
            //Send the user to the required controller
            return $next($request);
    } else {
        //Else, throw whatever error you want to throw
        throw new InputException("Enter all required parameters");
    }
}

私はそれがあなたのために働くと思います。

于 2015-07-31T11:49:22.153 に答える