2015-01-15 35 views
1

我想在phpspec這就要求Laravel的Validator::make功能(http://laravel.com/docs/4.2/validation我如何調用驗證從一個命名空間已經存在的Validator類

但是測試的功能,我想調用同樣的功能從已經採用Validator類名稱的命名空間。我怎樣才能調用文檔中描述的功能?

失敗的解決方案:

嘗試1

return \Illuminate\Validation\Validator::make($values,$rules); 

給我

Call to undefined method Illuminate\Validation\Validator::make() 

嘗試2

return \Illuminate\Validation\Factory::make($values,$rules); 

給我

Using $this when not in object context in /vendor/laravel/framework/src/Illuminate/Validation/Factory.php on line 92. Factory 

嘗試3

use \Validator; 

給我

Cannot declare class Isoform\Validator because the name is already in use 

嘗試4

use \Validator as DefaultValidator; 

給我

Class 'DefaultValidator' not found 
+0

可能的提示:「調用未定義的方法」意味着它在該位置找到了一個類,但它可能不是您正在尋找的類。 – mopo922

+0

@ mopo922如果我的班級錯了,那麼正確的班級在哪裏? –

+1

您可以使用'\ Validator :: make($ values,$ rules)'來獲得Laravel的驗證器。 – user3158900

回答

0

嘗試只是一個單一的斜槓來引用全局命名空間:

return \Validator::make($values,$rules); 
+0

感謝mopo,但它返回'使用$ this,而不是在第92行的/vendor/laravel/framework/src/Illuminate/Validation/Factory.php中的對象上下文中。'工廠'有'make'功能,但它不是靜態的 –

+0

@AakilFernandes我明白了。 Plz看到更新的答案。 – mopo922

+0

仍然是虛無:':沒有找到'Class'Validator''。對Facades進行研究,非常感謝指針。 –

1
return \Illuminate\Support\Facades\Validator::make($values,$rules); 

這將在phpspec導致錯誤,但無法避免。雖然Validator::make看起來像一個靜態函數 - 幕後它真的返回一個實例。因爲我使用的是phpspec,所以沒有創建該實例,因此出現錯誤。

0

我解決了那個問題。只需從vendor\laravel\framework\src\Illuminate\Validation\Validator.php中刪除use Validator,然後將use Validator代碼添加到您的控制器。那麼你已經準備好採取行動了。

$validator = Validator::make($request->all(), $rules); 
相關問題