1

EmployerLaravel 4 アプリケーションでモデルを作成Employer.phpし、データベースに保存する前にユーザー入力を検証する次の関数を作成しました。

public static function validate($input)
{
    $validator = Validator::make($input, static::$rules);

    if ($validator->fails() {
        return $validator;
    }

    return true;
}

特定のフィールドが必須であると指定したすべてのルールの値を渡すため、データベースに新しいレコードを作成するときに、これはうまく機能します。

ただし、データベースには、作成後にユーザーに編集させたくない特定のフィールドがあります (たとえば、business_name)。コントローラーの edit メソッドでフォームを作成し、フォームからそれらのフィールドを省略します。business_nameしかし、で必要とされるため、検証は失敗します$rules

一時的な回避策として、編集フォームに隠しフィールドを作成し、business_name. ただし、これも一意である必要があり、フォームをupdateメソッドにパッチすると失敗します!

何かアドバイス?呼び出し元のメソッドに応じて適用する検証ルールを指定する方法はありますか? Employer.phpまたは、特に更新メソッドを検証するために新しいメソッドを作成する必要がありますか?

4

1 に答える 1

2

required_without検証規則を使用できます。新しくインスタンス化されたモデルにはまだ id フィールドがないため、 がid存在しない場合にのみいくつかのフィールドを要求できます。これはうまくいくはずです:

public static $rules = array(
    'business_name' => 'required_without:id'
);

http://laravel.com/docs/validation#rule-required-without

于 2013-08-24T09:12:22.537 に答える