在Laravel 4中使用Laravel内置函数需要自己的自定义类文件

时间:2014-07-23 06:30:35

标签: php class validation laravel-4

我有一个自定义类文件,仅用于我自己的自定义函数。

我需要在我的自定义类文件

中使用Laravel的Validator函数

我会尝试扩展,使用名称空间等,而不是按预期工作。

我不确定如何使用自己的自定义类/帮助文件的方式/正确方法,请指导。

class SessionsController extends \BaseController {

   function __construct()
   {
       //Include my class file @ app/_extra/custom_validator.php
       require_once app_path('_extra/custom_validator.php');

   }

}

这是我的验证器类文件

 class custom_validator extends Illuminate\Validation\Validator
 {

     public function validate($input,$rules){
         $validation = Validator::make($input,$rules);
         if($validation->passes())return true;
         return $validation->messages();
     }
 }

2 个答案:

答案 0 :(得分:2)

对于您的自定义类,您可以在app目录中以项目命名的单独文件夹。在该文件夹中,您可以拥有自定义验证器。

假设您有一个app / Project / Validators文件夹,并在该文件夹中包含您的custom_validator类。像这样定义你的类和命名空间

<?php namespace Project\Validators;

 class CustomValidator extends Illuminate\Validation\Validator
 {

     public function validate($input,$rules){
         $validation = Validator::make($input,$rules);
         if($validation->passes())return true;
         return $validation->messages();
     }
 }

然后转到你的composer.json并让这个目录自动加载

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ],
    "psr-4": {
        "Project\\": "app/Project"
    }
}

如果要使用该类,可以从自己的命名空间中访问它:

首先解决控制器中的命名空间:

use Project\Validators\CustomValidator;

然后你可以像这样实例化这个类:

$validator = new CustomValidator();

比实际需要文件系统中的文件更好。 别忘了做

composer dump-autoload

更新composer.json。

希望这有帮助!

答案 1 :(得分:0)

在composer.json中,您可以将文件添加到自动加载对象的classmap对象中。或者,如果您有一个目录,其中包含要自动加载的文件,您可以将其添加到PSR-0或PSR-4自动加载对象中,如下所示:

...
"autoload": {
  ...
  "psr-0": {
    "Acme": "app/Acme"
  }
...

这将加载app / Acme中的所有类,以便在您的应用程序中使用。