2015-02-18 46 views
0

我正在使用Slim和Eloquent模型等的Illuminate Database包構建API。我已經使用Capsule實例化數據庫處理程序,如README中所示。但是,現在我想在我的模型上使用驗證功能,而無需安裝完整的Laravel套件,但我無法將自己的頭圍繞在此庫的設計中。在獨立的非Laravel應用程序中照亮驗證程序

我該怎麼辦?看起來Laravel提供的文檔非常期待您使用Laravel開箱即用。

+0

使用作曲家加入'照亮/ validation'您的需求將下載所需的依賴準備使用您的非'laravel'應用 – 2015-02-18 00:46:15

+0

呀,但我不明白的是如何使用這個包。在包有一個'Factory'類和'Validator'類,既需要'TranslatorInterface'作爲參數傳遞給它們的構造。我通過什麼? – Viktor 2015-02-18 22:25:45

回答

1

我不建議這樣做,但Laravel驗證器可能不是你想要的。我建議看看Symfony或Zend Framework(2+)中的驗證器類。他們的工作也非常的獨立驗證,事實上我正在使用一個Laravel項目ZF2表單類和確認的時刻,因爲Laravel形式和驗證類只是沒有達到標準。

這可能不是您想要聽到的答案,但它可能會爲您節省一些長期的痛苦。

+0

完全同意這裏。我已經與ZF1驗證和表單元素(與ZF2位),豐富的經驗和它在不同的聯賽Laravel。 Laravel的前端和表單/驗證程序看起來像是事後的想法。 – dKen 2016-09-21 07:16:39

0

我只是想知道同樣的事情,我在這裏一年後發現delatbabel的回答是嚴重的不足。我確實發現了以下Gist,其中spekkionu有一個相當簡單的設置讓你開始。 (它在我的機器上工作??; P)它顯示瞭如何爲工廠製作翻譯器等等。當您將作曲家導入illuminate/validation時,它都包含在內。

希望它能幫助: https://gist.github.com/spekkionu/e9103993138e666f9f63

最佳,

2

這裏是當前版本的解決方案:Laravel 5.4。 的composer.json文件:

{ "name": "Validation standalone", "require": { "php": ">=5.6.4", "illuminate/validation": "5.4.*", "illuminate/translation": "5.4.*" } }

請注意,我們還必須要求 「亮/翻譯」: 「5.4 *」。然後在你的PHP文件:

use Illuminate\Validation; 
use Illuminate\Filesystem; 
use Illuminate\Translation; 

include 'vendor/autoload.php'; 

$filesystem = new Filesystem\Filesystem(); 
$fileLoader = new Translation\FileLoader($filesystem, ''); 
$translator = new Translation\Translator($fileLoader, 'en_US'); 
$factory = new Validation\Factory($translator); 

$messages = [ 
    'required' => 'The :attribute field is required.', 
]; 

$dataToValidate = ['title' => 'Some title']; 
$rules = [ 
    'title' => 'required', 
    'body' => 'required' 
]; 

$validator = $factory->make($dataToValidate, $rules, $messages); 

if($validator->fails()){ 
    $errors = $validator->errors(); 
    foreach($errors->all() as $message){ 
     var_dump($message); 
    } 
} 

在這裏,我故意錯過了規定的驗證數據的「身體」字段,以便顯示驗證錯誤。