首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel唯一验证-检查前更改值

问Laravel唯一验证-检查前更改值
EN

Stack Overflow用户
提问于 2022-04-25 05:03:27
回答 2查看 58关注 0票数 0

我想通过从url提取域名来检查唯一的url。

https://stackoverflow.com和https://stackoverflow.com/something?foo=bar应该显示错误。

我有如下表格要求,

代码语言:javascript
复制
public function rules()
{
    return [
        'name' => 'required',
        'url' => 'required|unique:sites,url',
        'favicon' => 'nullable|image',
    ];
}

我试过更改表单请求值,但它不起作用,

代码语言:javascript
复制
// The getDomainName() returns the stackoverflow.com for https://stackoverflow.com

$this->request->set('url', 
    Site::getDomainName($this->request->get('url'))
);

我也试着跟着,

代码语言:javascript
复制
$url = $this->request->get('url');

$domain = 'https://' . Site::getDomainName($url);

$uniqueRule = Rule::unique('sites', 'url')
    ->where(function ($query) use ($domain) {
        return $query->where('url', $domain) ? false : true;
    });

任何帮助都将不胜感激,谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-04-25 05:20:05

您需要解析url以提取带有协议的域名,然后可以合并到表单请求中。你必须在“规则启动”方法中这样做。

代码语言:javascript
复制
$result = parse_url(request()->url);
request()->merge(['url'=>$result['scheme']."://".$result['host']]);
票数 0
EN

Stack Overflow用户

发布于 2022-04-25 06:29:35

用prepareForValidation()求解

代码语言:javascript
复制
protected function prepareForValidation()
{
    $this->merge([
        'url' => 'https://' . Site::getDomainName($this->request->get('url'))
    ]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71994701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档