我有一个自定义类文件,仅用于我自己的自定义函数。
我需要在我的自定义类文件
中使用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();
}
}
答案 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中的所有类,以便在您的应用程序中使用。