Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • Aaeneas

      Seviye 55
    • Düzenlendi

    Aşağıdaki gibi url yi doğruluyorum. Ama url benzersizmi kontrolu yaparken örneğin deneme.com varsa hata veriyor ama www.deneme.com olarak eklenirse hata verdirmeyi başaramadım. url başında www. varsa kaldırmak istemiyorum.

     $url = $request->input('url');
        if (!preg_match("~^(https?://)~", $url)) {
            $url = "https://" . $url;
        }
    
        $request->merge(['url' => $url]);
    
        $request->validate([
            'title' => 'required|string|max:255',
            'description' => 'nullable|string',
            'url'=>['required','unique:website,url', new Siteurl],
            'category_id' => 'required|max:255',
        ]);
      • mgsmus

        Seviye 1384

      aeneas deneme.com/products?page=1 gibi bir adresi mi kontrol ediyorsunuz yoksa sadece domaini mi?

        • mgsmus

          Seviye 1384

        aeneas O zaman $domain = preg_replace('/^www\./', '', parse_url($url, PHP_URL_HOST)); yaparak sadece domaini alıp işlem yapabilirsiniz.

        • Aaeneas

            Seviye 55
          • Düzenlendi

          Teşekkür ederim hocam bu şekilde cözdüm.

           $url = $request->input('url');
              if (!preg_match("~^(https?://)~", $url)) {
                  $url = "https://" . $url;
              }
          
              $request->merge(['url' => $url]);
              $domain = preg_replace('/^www\./', '', parse_url($url, PHP_URL_HOST));
          
              Validator::extend('unique_domain', function ($attribute, $value, $parameters, $validator) use ($domain) {
                  return \App\Models\Website::where('url', 'like', '%' . $domain . '%')->doesntExist();
              });
          
              $request->validate([
                  'url'=>['required','unique_domain', new Siteurl],
              ], [
                  'unique_domain' => 'The domain is already in save.',
              ]);
          
              $website = Website::create([
                  'url' => $url,
              ]);