IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

[Laravel 6] Questions sur mon code avec utilisation d'AJAX


Sujet :

Laravel PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut [Laravel 6] Questions sur mon code avec utilisation d'AJAX
    Bonjour tout le monde,

    Je suis occupé à redévelopper une application existante, mais cette fois avec un framework qui est Laravel6.

    Je voudrais donc coder convenablement dès le départ en respectant un maximum les conventions de ce magnifique framework.

    J'ai codé une premère partie de mon site avec AJAX, mais je ne pense pas que je respecte les conventions de Laravel, j'ai donc plusieurs questions :

    1- Est-ce que les fichiers js doivent obligatoirement se mettre dans le dossier public ?
    2- Voici mon fichier js avec l'api AJAX, est-il correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    $(document).ready(function()
    {
        $('#inscription_registre_national').change(function()
        {
            var niss = $(this).val();
            $.ajaxSetup({
                headers:{
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
     
            $.ajax(
            {     
     
                type: 'POST',
                url: 'niss',
                dataType: 'text',
                data:{
                    'niss':niss
                },
                success:function(retour)
                {
                    if(retour > 0)
                    {
                        //DD 08/02/20 permet d'indiquer que le niss est déjà dans la DB, je remove la class et je la remets autrement, il garde toujours la même classe (rouge ou verte)
     
     
                        $('#resultat_check_niss').removeClass().addClass('invalid-feedback').text('Ce numéro de registre national existe déja dans la base de données, si vous avez oublié votre mot de passe, veuillez svp cliquer sur ce lien').show();
     
     
                    }
                    else
                    {
                        $('#resultat_check_niss').removeClass().addClass('valid-feedback').text('Numéro valide et non présent dans la base de données.').show();
                    }
     
                },
                error:function(callback)
                {
                    console.log(callback);
                    alert("dans Erreur");
                }
            });
     
        });
     
     
                });
            }
     
        });
     
    });
    3- Voici la route :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Route::post('niss', 'NissController@check_Niss');
    4- Ce qui me dérange le plus, c'est le controller qui fait tout le boulot, je ne suis pas censé appeler un modèle ?

    Code du controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
     
    namespace App\Http\Controllers;
     
    //ce use permet d'utiliser DB
    use Illuminate\Support\Facades\DB;
    use Illuminate\Http\Request;
     
    class NissController extends Controller
    {
        public function check_Niss(Request $request)
        {
            //ceci devrait se faire via un modèle (car DB !!!!)
            if(DB::table('pharmaciens')->where('registre_national', $_POST['niss'])->exists())
            {
                $retour = 1;
            }
            else{
                $retour = 0;
            }
            echo $retour;
     
        }
    }
    5- Ici, je ne modifie rien, donc normalemnt pas besoin de Filable ?

    6- J'ai vu un exemple de code qui ressemble à ceci (hors de mon programme) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function show($id)
        {
            $task = Task::find($id);
     
            return response()->json([
                'error' => false,
                'task'  => $task,
            ], 200);
        }
    Je ne vois nulle part la méthode show dans un modèle, on appelle les méthodes d'Eloquent ?

    7- Avez-vous quelque chose d'autre à me conseiller afin d'améliorer mon code (niveau sécurité par exemple) ?

    Merci d'avance pour l'aide.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Salut, tu poses beaucoup de question et je ne sais pas si je vais répondre à tout.

    Pour la méthode show, cela se trouve dans ton controller, si tu crées un controler de type rest
    Typiquement si tu tapes la comande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php artisan make:controller --resource SomeController
    Tu auras un controller où toutes les méthodes rest sont déjà déclaré.

    Pour ton model, typiquement si tu as créé le model Pharmacien alors, ce que tu as écrit est presque bon (en fait les deux sont possible), mais je ferais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $pharmacien =  Pharmaciens::where('registre_national', $request->niss)->exists();
    if($pharmacien){.....
    Tu vois que je remplace ton $_POST par la variable $request qui est une injection de la classe Request en parametre.

    Tu pourrais aussi mettre en place une validation du POST niss

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $request->validate([ 'niss' => 'required']);
     
    $pharmacien =  Pharmaciens::where('registre_national', $request->niss)->exists();
    if($pharmacien){.....
    Concernant ton code javascript, normalement Laravel viens avec VueJs ou react, mais j'utilise aussi JQuery

    Du coup, tu ne dois pas mettre ton code dans public, mais bien dans les vues Blade, regarde les includes et les sections de blade.

Discussions similaires

  1. [XL-2016] Erreur sur mon code copier avec 2 classeurs
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/02/2018, 20h10
  2. [XL-2007] Erreur sur mon code envoi mail avec fichier joint
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/08/2014, 18h08
  3. [Débutant] Erreur sur mon code avec mes methodes.
    Par solaar dans le forum Silverlight
    Réponses: 5
    Dernier message: 30/05/2013, 17h43
  4. Réponses: 3
    Dernier message: 04/08/2012, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo