Je suis le développeur iOS principal sur une application et c'est une longue histoire, mais notre développeur API indépendant est `` indisponible ''. Je suis donc un novice complet de laravel / PHP et j'essaie de corriger un bogue sur notre API.

Fondamentalement, lorsqu'un utilisateur s'inscrit par défaut, nous prenons sa photo de profil Facebook et enregistrons son URL dans la base de données en tant que photo de profil pour l'application. Lorsqu'ils ajoutent une image personnalisée, elle est enregistrée avec une chaîne alphanumérique aléatoire et cette chaîne est définie dans la colonne profile_pic. Lorsque le profile_pic est renvoyé dans l'objet JSON, notre URL de base est ajoutée au début.

Donc, le problème est que cette URL de base est également ajoutée au début de l'URL de l'image Facebook pour qu'elle ressemble à https://base.url/https://facebook.url, ce qui signifie qu'un utilisateur ne verra pas l'image, juste la couleur grise de l'espace réservé par défaut. Je voudrais pouvoir vérifier si l'URL commence déjà par une certaine valeur.

Voici ce que j'ai jusqu'à présent:

public function getProfilePicAttribute($value){
     $fbUrl = "https://scontent.xx.fbcdn.net"
     $length = strlen($fbUrl);
     if (substr($value, 0, $length) === $fbUrl) {
         return $value
     }
     return 'https://' . env('VDT_DOMAIN') . '/uploads/profile_pic/' . $value;
}

Cela ne fonctionne pas, alors je me demandais si quelqu'un pourrait m'aider. Merci d'avance pour tout conseil!

1
jackchmbrln 20 avril 2017 à 20:03

3 réponses

Meilleure réponse

Laravel a une excellente aide starts_with(). Par exemple, cela renverra true:

starts_with('This is my name', 'This');
7
Alexey Mezenin 20 avril 2017 à 17:26

Au lieu de tronquer la chaîne à comparer, vous pouvez utiliser strpos (http: / /php.net/manual/en/function.strpos.php).

if (strpos($value, $fbURL) === 0) {
    return $value;
}
return 'https://' . env('VDT_DOMAIN') . '/uploads/profile_pic/' . $value;
1
WOUNDEDStevenJones 20 avril 2017 à 17:05

Il s'agit de montrer l'utilisation de la méthode indiquée ci-dessus par Alexey

    public function getProfilePicAttribute($value){
    $fbUrl = "https://scontent.xx.fbcdn.net";
 $length = strlen($fbUrl);

    if(starts_with($fbUrl, 'base.url')){

    return $value;
    }


     return 'https://' . env('VDT_DOMAIN') . '/uploads/profile_pic/' . $value;

Où base.url est l'URL qui est concaténée avant la valeur

0
Sari Yono 20 avril 2017 à 20:17