我正在尝试使用Laravel验证:as described here
我不打算放置整个规则类,因为它直接来自artisan make:rule。
问题:
当我尝试测试' false'在这里:
function passes($attribute, $value) { return false; //testing 'false' logs me out }
这是我在控制器中使用它的方式:
$this->validate($request, [ 'image_64' => ['required', new \App\Rules\Base64Rule] ]);
这就像重定向不会形成页面,而是索引页面 - 在我的情况下会将用户记录下来(除其他外)。
当方法'通过时,是否有任何受保护的var标记正确的重定向路由?返回false?
有人遇到过这样的事吗?
修改
山姆,
正如我所提到的,规则类是原始的 - 新生成的:
namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class Base64Rule implements Rule { /** * Create a new rule instance. * * @return void */ public function __construct() { } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { return false; } /** * Get the validation error message. * * @return string */ public function message() { return 'The validation error message.'; } }
如果我在控制器上运行,请执行以下操作:
use App\Rules\Base64Rule; $rule = new Base64Rule; dd($rule->passes('image_64', 'udfshjbfisuusoshgosghosh'));
我在规则的方法传递()中得到了我所拥有的一切。
如果我在规则的方法中使用pass()返回true;它运作正常。
如果我在规则的方法中使用pass()dd(' some'),我会得到一些'在那个控制器测试中。
当测试结果为“假”时并使用常规验证码:
use App\Rules\Base64Rule; $this->validate($request, [ 'image_64' => ['required', new Base64Rule] ]);
...我被重定向到索引页面。
我必须遵循请求/回应,看看,Laravel失败了,为什么......我猜。它是我的代码还是错误。