首页 > 解决方案 > 如何使用“sometimes()” - Laravel 验证,foreach 构造中的方法

问题描述

我正在使用 Laravel,我遇到了下一个问题 - 我在对象中获得了一个null变量值:$validator

class PageRequest extends Request
{
    protected function getValidatorInstance()
    {
        $validator = parent::getValidatorInstance();
        foreach (\Config::get('app.all_langs') as $locale) {
            dump($locale); // !!!!! all it's ok - en, ro, ru
            $validator->sometimes('alias'.$locale,'unique:pages,alias->'.$locale.'|max:255', function($input) {
                dump($locale]); // ????? - null instead of en, ro, ru
            }
    }
}

标签: laravel

解决方案


您需要使用该use构造来访问闭包内的父作用域中的变量,例如function($input) use ($locale). 例如:

$validator->sometimes('alias'.$locale,'unique:pages,alias->'.$locale.'|max:255', function($input) use ($locale) {
   dump($locale); 
}

推荐阅读