2017-11-25 200 views
0

我的控制器是這樣的:如何在規則laravel中添加條件?

<?php 
use App\Http\Requests\StoreReceiveOrderRequest; 
class SellController extends Controller 
{ 
    public function receiveOrder(StoreReceiveOrderRequest $request) 
    { 
     dd($request->all()); 
     ... 
    } 
} 

之前在receiveOrder方法執行的語句,它會檢查在StoreReceiveOrderRequest

規則

的StoreReceiveOrderRequest這樣的:

<?php 
namespace App\Http\Requests; 
use Illuminate\Foundation\Http\FormRequest; 
class StoreReceiveOrderRequest extends FormRequest 
{ 
    public function rules() 
    { 
     return [ 
      'is_follow_up'=>'required', 
      'note'=>'max:300' // I want to make this to be required if is_follow_up = n 
     ]; 
    } 
} 

dd($request->all());的結果,有2個結果,取決於用戶輸入

如果t他is_follow_up = Y,結果是這樣的:

Array 
(
    [is_follow_up] => y 
) 

如果is_follow_up = N,結果是這樣的:

Array 
(
    [is_follow_up] => n 
    [note] => test 
) 

如果is_follow_up = N,我想要做的音符需要

如果is_follow_up = Y,不需要注

似乎它必須在規則上添加條件

我該怎麼做?

回答

3

有所做的正是這已經是一個驗證規則。 Laravel驗證文檔列出了所有可用的規則。

'note' => 'required_if:is_follow_up,n|...' 

Laravel 5.3 - Docs - Validation - Rule - required if

+0

似乎你可以幫助我。看這個。 https://stackoverflow.com/questions/47726407/how-can-i-add-condition-based-on-the-parameters-of-the-array-data-on-the-rules-l。這有點不同 –

0

只要改變你的驗證就以下

<?php 
namespace App\Http\Requests; 
use Illuminate\Foundation\Http\FormRequest; 
    class StoreReceiveOrderRequest extends FormRequest 
    { 
     public function rules() 
     { 
     $rules = ['is_follow_up'=>'required', 
      ]; 

     if (Input::get('is_follow_up')=='n') { 
      $rules += [ 
      'note'=>'max:300' 
      ]; 
     } 
     } 
    } 
-1

閱讀Laravel文檔的所有可用的驗證規則列表。

'note' => 'required_if:is_follow_up,n|...' 
+0

似乎你可以幫助我。看這個。 https://stackoverflow.com/questions/47726407/how-can-i-add-condition-based-on-the-parameters-of-the-array-data-on-the-rules-l。這有點不同 –

+0

@akramwahld我真的不明白什麼是發佈相同的答案,已經在這裏... 2天后 – lagbox

+0

@lagbox,它不關你的業務,我可以隨時回答任何問題,我可以,而且很明顯我沒有違反SO規則, –

相關問題