针对不同请求的模型验证

时间:2016-08-17 09:04:37

标签: laravel laravel-5.2

我有几个模型,所有模型都有一个创建页面。创建模型时,我不执行任何验证。这是因为我允许用户随时返回并添加内容。

但是,在某些时候,我向用户提供了一个按钮

<a href="{{ route('projects.push', $project->id) }}" class="btn btn-info pull-right" data-token="{{ csrf_token() }}">
    Push
</a>

所讨论的所有模型都与项目模型有关。当他们点击按钮时,我将把模型发送到外部系统。但是,此时我需要验证 发送的模型具有所有必需的数据。我知道关于模型的验证,但这是在它们被创建时。是否有可能在完全不同的行动上验证它们?

由于

1 个答案:

答案 0 :(得分:1)

当然有可能。将规则和/或消息作为静态函数存储在模型中是明智的。一个例子是:

// Project model
public static function rules()
{
    return [
        'field1' => 'rules1..',
        'field2' => 'rules2..'
    ];
}

然后,您可以在应用程序的任何位置检索规则:

Validator::make($fields, Project::rules());

最后一件事。您说过在模型已经创建时验证它。我不知道放置整个检索到的模型变量而不是$fields是否有效。例如:

$project = Project::find($id);

// Try this
Validator::make($project, Model::rules());

// Otherwise try this
Validator::make($project->attributes, Model::rules());

希望这会有所帮助:)