如何仅在$this->language()返回en时为Laravel验证添加alpha_num规则
解决方案:根据语言动态添加Laravel验证规则
你可以通过动态构建验证规则数组,结合对language()方法返回值的判断,实现仅在英文环境下启用alpha_num规则的需求,以下是两种简洁的实现方式:
方式一:条件追加规则
先定义基础的必填规则,再判断当前语言是否为'en',符合条件则向规则数组中追加alpha_num:
public function rules() { $rules = [ 'title' => ['required'], ]; if ($this->language() === 'en') { $rules['title'][] = 'alpha_num'; } return $rules; } public function language() { // 实际业务逻辑可根据需求调整,比如从请求/配置中获取语言 return 'en'; }
方式二:数组合并简化写法
利用array_merge和三元表达式,一行完成规则的动态构建:
public function rules() { return [ 'title' => array_merge( ['required'], $this->language() === 'en' ? ['alpha_num'] : [] ), ]; } public function language() { return 'en'; }
这两种方式都能确保只有当language()返回'en'时,title字段才会应用alpha_num验证规则,其他语言环境下仅保留required规则。
内容的提问来源于stack exchange,提问作者Cudos
相关产品推荐
相关产品推荐

