0
votes

Ma déclaration IF ne fonctionne pas au middleware

J'essaie de faire un middleware qui peut filtrer ma demande HTTP en vérifiant si la "$ créée_by" strong> que je passe à travers la demande ALREDAY existe dans mes "utilisateurs" Strong> Table
Si cela le fait, je veux procéder à ma "$ suivante (Demande $)" strong>

Et si je ne veux pas, je veux le rediriger.

Lorsque la situation est la suivante: - p> xxx pré>

Il redirige vers $ Suivant (Demande $ ); fort> qui est correct
Mais quand la "$ de demande-> créée_by" strong> n'est pas présente dans dB forte> qui fait $ ip null
Et il montre cette erreur "essayant d'obtenir la propriété" uuid "de non-objet" strong> p>

voici mon middleware: - strong> p>

<?php

namespace App\Http\Middleware;

use Closure;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;


class Posts
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)

     {
      $ip = DB::table('users')->where('uuid', '=', $request->created_by)->first();
        // dd($ip);
       if ($ip->uuid == $request->created_by) {
        if ($ip == null) {
             return redirect('https://www.google.com');
        }


       }

        return $next($request);

        }
    }


5 commentaires

Sinon, DB, alors $ IP est null. Vous ne pouvez pas vérifier $ ip-> uuid à ce point dans votre premier si. Cette propriété n'est pas présente, car la variable est null.


Vous devez vous assurer que $ IP n'est pas null avant d'essayer d'accéder à la propriété UUID.


Oui, je suis la valeur est NULL c'est ce que je veux "si la valeur est null, je veux qu'il redirige sur Google.com"


C'est dommage que vous n'ayez pas été inspiré de quelque chose après vous-même après que beaucoup de gens vous avaient dirigé à partir de l'erreur. Vous n'apprenez pas beaucoup à travailler de cette façon.


Je savais que la norme $ est nulle mais je n'ai pas connu beaucoup de façons de résoudre ce problème -Je va faire mieux la prochaine fois


3 Réponses :


1
votes

Edit:

Vous avez déjà effectué la comparaison dans dB, mise à jour poignée () pour être: xxx


2 commentaires

Même si la valeur est NULL, elle exécute toujours $ suivante (Demande $)


Merci pour l'aide, ça me dérangerait de m'aider avec une autre question



1
votes

Vous devez vous assurer que $ IP n'est pas null avant d'essayer d'accéder à la propriété UUID.

public function handle($request, Closure $next) {
    $ip = DB::table('users')->where('uuid', '=', $request->created_by)->first();
    if(is_null($ip) || $ip->uuid !== $request->created_by) {
        return redirect('https://www.google.com');
    }

    return $next($request);
}


1 commentaires

Merci pour l'aide, ça vous dérangerait de m'aider avec une autre question?



2
votes

Vous pouvez utiliser facultatif pour éviter toute erreur si votre objet est NULL.

public function handle($request, Closure $next) {
    $ip = DB::table('users')->where('uuid', '=', $request->created_by)->first();
    if(optional($ip)->uuid == $request->created_by) {
        return $next($request);
    }

    return redirect('https://www.google.com');

}


1 commentaires

Merci pour l'aide, ça vous dérangerait de m'aider avec une autre question?