【发布时间】:2014-04-24 19:49:17
【问题描述】:
正如问题标题所述: 使用 Validator::extend 时如何访问其他输入属性?
在检查 Laravel 的内置 Validator 类时,我可以看到它使用 $this->data 来访问其他属性;但是你不能在 Validator::extend 需要的闭包中直接使用$this。
似乎手动扩展 Validator 类(通过自定义类)是唯一的选择......我正确吗?如果是这样,在我看来,将验证器转换为包是一个严重的限制,因为每个包都会扩展基本的 Validator 类,PHP 最终将为其保留最后定义的扩展(从而使其他验证器包无法使用......)。还是我错过了什么?
谢谢。
编辑
我还尝试将其包装在 Jason Lewis 的 this method 之后的一个包中,但我不断收到一个 BadMethodCallException 指出无法找到验证方法...该包符合 psr-0 并且我我很确定这不是命名空间问题。
【问题讨论】:
-
您可以使用
Input::get()来获取闭包内的其他字段吗? -
我实际上并没有考虑过直接通过它的外观获取输入。令人惊讶的是,这确实有效...如果将其包装在一个包中,我不确定是否要依靠外观是要走的路?
-
IMO 使用
Input::get()是非常hacky。当您不想针对不是来自请求的数据进行验证时会发生什么?不完全是可重用的自定义验证规则.. -
绝对是“hacky”,我喜欢下面@SamV 的回答
标签: php validation laravel package