2016-08-17 92 views
0

我有幾個模型,所有這些模型都有一個創建頁面。模型創建時,我不執行任何驗證。這是因爲我隨時允許用戶返回並添加事物。對不同請求的模型驗證

然而,在某些時候,我給用戶

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

有問題的車型全部都涉及到項目模型提供了一個按鈕。當他們點擊按鈕時,我將把模型發送到外部系統。但是,此時我需要驗證發送的模型是否具有所有必需的數據。我知道關於模型的驗證,但是這是他們創建的時候。是否有可能通過完全不同的行動來驗證它們?

謝謝

回答

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()); 

希望這有助於:)