2012-12-30 139 views
1

這可能是一個簡單的修復...但我無法驗證工作。Laravel驗證沒有顯示錯誤

我已經簡化我的測試回到這個...

$input = array(
     'name' => '' 
    ); 

    $rules = array(
     'name' => 'required|min:3|max:50|alpha' 

    ); 

    $v = Validator::make($input, $rules); 

而且即使「名稱」是必需的,並擁有所有其他規則的驗證程序不包含任何錯誤。

dd($v->errors); // returns NULL 

然而

dd($v->fails()); // returns bool(true) 

爲什麼沒有錯誤信息?當我轉儲整個$ v對象時,沒有消息可以在任何地方看到。非常困惑...幫助表示讚賞。謝謝。

----編輯

我已經簡化了這個更進一步。 我在一個視圖中直接測試把這個...

<?php 

$input = array(
    'name' => '' 
); 

$rules = array(
    'name' => 'required' 
); 

$v = Validator::make($input, $rules); 

dd($v); 

?> 

我仍然得到完全同樣的問題?

這裏是$ V對象

object(Laravel\Validator)#32 (9) { 

    ["attributes"]=> 
    array(1) { 
    ["name"]=> 
    string(0) "" 
    } 
    ["errors"]=> 
    NULL 
    ["rules":protected]=> 
    array(1) { 
    ["name"]=> 
    array(1) { 
     [0]=> 
     string(8) "required" 
    } 
    } 
    ["messages":protected]=> 
    array(0) { 
    } 
    ["db":protected]=> 
    NULL 
    ["bundle":protected]=> 
    string(11) "application" 
    ["language":protected]=> 
    NULL 
    ["size_rules":protected]=> 
    array(4) { 
    [0]=> 
    string(4) "size" 
    [1]=> 
    string(7) "between" 
    [2]=> 
    string(3) "min" 
    [3]=> 
    string(3) "max" 
    } 
    ["numeric_rules":protected]=> 
    array(2) { 
    [0]=> 
    string(7) "numeric" 
    [1]=> 
    string(7) "integer" 
    } 
} 

東西在我安裝/設置壞了?

+0

這個代碼是什麼?這些規則是公開的嗎? – Ted

+0

它在控制器中...在公共職能post_new() – markstewie

+0

嘗試減少到​​剛纔需要的。 – Ted

回答

3

您必須在出現任何錯誤之前測試您的驗證器。試試這個:

if ($v->fails()) { 
    dd($v->errors); 
} 
+0

我知道這將是一個簡單的答案!非常感謝! – markstewie

+0

我的榮幸。最佳做法是不要在控制器中擁有規則。嘗試將它們作爲公共靜態數組粘貼到模型中。更容易維護。持有這些規則的表格班也很受歡迎(每個表格一個)。 – Ted

2

我認爲你需要調用$v->passes$v->fails第一,它實際評估您的驗證規則,併產生錯誤。那麼你可以使用...

dd($v->errors->all());