我得到了一个自定义类文件,只是为了我自己的自定义函数。
我需要在我的自定义类文件中使用Laravel的Validator函数,
我尝试扩展,使用命名空间等,但不像预期的那样工作。
我不确定如何使用自己的自定义类/helper文件的正确方法,请指导。
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();
}
}
对于你的自定义类,你可以在你的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();
}
}
然后去你的作曲家。并自动加载这个目录
"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时。
希望这对你有帮助!
在您的编写器中。Json中,可以将文件添加到自动加载对象的classmap对象中。或者,如果你想要自动加载一个满是文件的目录,你可以将它添加到PSR-0或PSR-4自动加载对象中,如下所示:
...
"autoload": {
...
"psr-0": {
"Acme": "app/Acme"
}
...
这将加载app/Acme中的所有类,以便在您的应用程序中使用。