簡體   English   中英

Laravel表單請求和驗證

[英]Laravel form requests and validation

下面是我在控制器(Laravel 5)上使用一個表單驗證請求來創建/存儲和編輯/更新方法的解決方案。

這是一個繁瑣而丑陋的黑客(即它讀取URI段以獲取正在編輯的記錄的id)。 有沒有更好的方法來確定請求是否從編輯/更新請求中接收信息? (沒有直接將$ id和一個標志傳遞給請求)

/**
 * Sets the basic validation rules that apply to the request.
 *
 * @return array
 */
protected $rules = [    
        'trading_name' => 'required|min:3|max:50|unique:companies',
        'legal_name' => 'required|min:3|max:50|unique:companies',
        'legal_identifier' => 'required|min:3|max:50|unique:companies',
        'status' => 'required',
        'website' => 'active_url',
        'type' => 'required',
        'payment_terms' => 'required|integer|min:0|max:180',
        'credit_limit' => 'required|integer|min:0|max:500000',
        'notes' => 'max:2000',
];

/**
 * Sets addition validation rules depending on the request type (i.e. edit & update).
 * 
 * 
 * @return array
 */
public function rules()
{
    $rules = $this->rules;
    if ($this->is('companies/*') == true) #Add a ignore self-unique rule as this is a edit&update request
    {
        $id = $this->segment(2);
        $rules['trading_name'] = $rules['trading_name'].',trading_name,'.$id;
        $rules['legal_name'] = $rules['legal_name'].',legal_name,'.$id;
        $rules['legal_identifier'] = $rules['legal_identifier'].',legal_identifier,'.$id;
    }
    return $rules;
}

如果您正在遵循正確的restful路由技術 - 您可以使用請求類型 - 為任何驗證提供通用解決方案

public function rules()
{
    if($request()->isMethod('put'))
    {
         // Update rules here
    }

    return $this->rules;
}

好的,我已經用谷歌解決了我自己的問題; 這里有一個關於這個主題的好資源https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update

以下任何一個都可以工作(替換上面原始代碼中的段ID行)

  • $ id = $ this-> route() - > parameters()[“公司”];
  • $ id = $ this-> route() - > getParameter('companies');
  • $ id = $ this-> route('companies');
  • $ id = $ this->公司

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM