Laravel 4 自定义验证规则 - 在哪里扩展验证器?

2023-11-26

我想制定一个自定义验证规则。 我的模型现在看起来像这样:

protected $rules = array(
    'first_name'  => 'required',
    'last_name'   => 'required',
    'ssn'         => 'required|integer|min:4|max:4',
    'email'       => 'required|email',
    'dob'         => 'required|checkAge',
    'phone'       => 'required',
    'street'      => 'required',
    'postal_code' => 'required|integer|min:4',
    'city'        => 'required'
);

但是我必须将自定义验证规则放在哪里? 我读到我需要扩展它验证器。 为此我创建了一个简单的函数

Validator::extend('foo', function($attribute, $value, $parameters)
{
    return $value == 'foo';
});

而且我不知道该去哪里检查?

也许有人可以帮助我。

Thanks


我通过在 /app 中创建一个验证文件夹来完成此操作,其中包含任何自定义验证文件。
我通过编辑自动加载它应用程序/启动/global.php.

ClassLoader::addDirectories(array(
    app_path() . '/commands',
    app_path() . '/controllers',
    app_path() . '/models',
    app_path() . '/presenters',
    app_path() . '/validation',
    app_path() . '/database/seeds',
));

我还在这个文件中注册了解析器;

Validator::resolver(function($translator, $data, $rules, $messages) {
        return new CoreValidator($translator, $data, $rules, $messages);
    });

示例自定义验证器类(在验证文件夹中);

<?php

class CoreValidator extends Illuminate\Validation\Validator
{

    protected $implicitRules = array('Required', 'RequiredWith', 'RequiredWithout', 'RequiredIf', 'Accepted', 'RequiredWithoutField');

    public function __construct(\Symfony\Component\Translation\TranslatorInterface $translator, $data, $rules, $messages = array())
    {
        parent::__construct($translator, $data, $rules, $messages);
        $this->isImplicit('fail');
    }

    public function validatePostcode($attribute, $value, $parameters = null)
    {
        $regex = "/^((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))$/i";
        if (preg_match($regex, $value)) {
            return true;
        }
        return false;
    }
}

并将自定义错误消息添加到 in 中的数组中app/lang/en/validation.php

return array(
...
"postcode" => "Invalid :attribute entered.",
...
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 4 自定义验证规则 - 在哪里扩展验证器? 的相关文章

随机推荐

  • 为什么 Javascript 内置方法/函数是用 C/C++ 而不是 JS 语法编写的

    这个问题是参考这个老问题在哪里可以找到 javascript native functions source code 该页面上的答案说 源代码位于c or c 但我很好奇为什么来源 定义 是这些语言 我的意思是它们是 JS 函数定义 例如
  • 分离一些次要情节,但不分离其他次要情节; Python、Matplotlib

    我正在 python v 2 7 9 中使用 matplotlib v 1 4 2 绘制子图网格 我可以手动调整子图之间的间距 但我希望仅某些子图具有不同的间距 我希望的最终图形是左侧有一个 2x5 子图网格 右侧有一个 2x5 子图网格
  • 如何“平行”组合镜头

    我是优秀的新手Control Lens我正在尝试将两个镜头 并行 而不是按顺序 组合起来 就像我对 Control Arrow 所做的那样 如果我以lens文档 data Foo a Foo baz Int bar Int a 我希望能够做
  • 如何从存档安装 stringi 库并安装本地 icu52l.zip

    我们正在笨手笨脚地让一些 R 代码在生产环境中工作 作为其中的一部分 我们安装了一些 R 包 如下所示 Default directories and mirrors WORKING DIR lt srv foo bar baz LIB D
  • 完全信任 Visual Studio 2012 和 .Net 4.0 的 UNC 共享

    每次我尝试打开位于 UNC 共享上的解决方案时 我都会收到以下对话框 我尝试过使用caspol exe汉塞尔曼谈论的效用here 但似乎不起作用 至少对于在 Visual Studio 2012 中运行的 Net 4 项目来说不是 使用相同
  • Android:我可以在服务中使用 Google Analytics吗?

    我有一个应用程序 大部分时间作为服务在后台运行 网上有很多关于如何使用 Google Analytics API 和 EasyTracker 库来跟踪多个活动的示例和教程 但没有一个示例和教程解释了如何在服务中使用 Google Analy
  • Chrome 和 Firefox 中带有换行符的文本区域的最大长度验证不同

    问题是 Firefox 将换行符视为 1 n 字符 而 Chrome 将它们视为 2 r n 这就是我得到的textarea with maxlength 10 这是10字符为Firefox 1234 5 6 7 这是10字符为Chrome
  • PHP 中唯一的临时文件名?

    我需要将一些文件转换为 PDF 然后将它们附加到电子邮件中 我在电子邮件方面使用 Pear Mail 这很好 大多数情况下仍在解决一些问题 但作为此过程的一部分 我需要创建临时文件 现在我可以使用临时南 函数 但听起来它在文件系统上创建了一
  • Rails 3.2.2 不执行 rjs

    我正在关注这本书使用 Rails 进行实用敏捷 Web 开发第 4 版 但我使用的是 Rails 3 2 2 而不是书中推荐的 3 0 5 ruby v ruby 1 9 3p125 2012 02 16 i686 linux rails
  • Vim textwidth 逗号缩进问题

    如果我在 Vim 中设置以下选项 set textwidth 80 文本将在 80 个字符处中断 这可行 但问题是如果逗号 位于行尾 Vim 会缩进下一行 我可以做什么来避免这种行为 您可能启用了 C 风格缩进 set nocindent应
  • 如何在 spring mvc 中的操作之前发送响应

    假设我的 spring 控制器函数接收大量数据 鉴于数据结构正确 我想返回 200 OK 并且在那之后我想执行处理 这可能需要一段时间 据我了解 发送响应的唯一方法是return命令 但我不想在响应发送时结束该功能 还有其他方法可以在函数中
  • 加载/存储宽松原子变量和普通变量有什么区别?

    正如我从测试用例中看到的 https godbolt org z K477q1 生成的程序集加载 存储原子宽松与普通变量相同 ldr和str 那么 宽松原子变量和普通变量有什么区别吗 区别在于正常的加载 存储不是保证是无泪的 而轻松的原子读
  • 计算矩阵的零空间

    我正在尝试求解 Ax 0 形式的一组方程 A 是已知的 6x6 矩阵 我使用 SVD 编写了以下代码来获取在一定程度上有效的向量 x 答案大致正确 但不足以对我有用 我怎样才能提高计算的精度 将 eps 降低到 1 e 4 以下会导致函数失
  • 选项的单击事件在 IE 中不起作用

    我有一个多选标签 我需要编写它的选项的 onclick 函数 因为我需要获取最后单击的选项的值 但是当我编写以下内容时 multiple select option click function var val this val alert
  • 约束成员模板的外线定义有哪些规则?

    考虑以下code template
  • 显示 MySQL 中日期时间在下一小时内的行

    我总是在处理复杂的 SQL 查询时遇到麻烦 这就是我所拥有的 query SELECT id name info date time FROM acms events WHERE date time DATE SUB NOW INTERVA
  • UINavigationBar 和新的 iOS 5+ 外观 API - 如何提供两个背景图像?

    我想利用新的 iOS 5 外观 API 为我的应用程序中的所有 UINavigationBar 实例提供自定义背景图像 要做到这一点 就像这样简单 UINavigationBar appearance setBackgroundImage
  • 从 localStorage 中删除项目

    我正在尝试从本地存储中删除单个项目 我正在使用 localStorage 来存储列表视图中选定的列表项 我附加了用于从本地存储中删除所选项目的复选框 但是 当我删除选定的复选框时 它不会正确删除 就像我选择一个复选框时 它删除的两个或三个项
  • Java中如何从HTTP请求中获取JSON对象

    我现在尝试使用 Java cord 中的 HTTP 请求获取 JSON 对象 我想知道如何在下面的代码中获取响应或 JSON 对象 请告诉我 在这个程序中 我尝试获取文章 纽约 的维基百科类别 String requestURL http
  • Laravel 4 自定义验证规则 - 在哪里扩展验证器?

    我想制定一个自定义验证规则 我的模型现在看起来像这样 protected rules array first name gt required last name gt required ssn gt required integer mi