Une fonction pas commode (ou une noob bien larguée...) [Résolu]

Signaler
Messages postés
9
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
26 décembre 2020
-
Messages postés
9
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
26 décembre 2020
-
Bonjour,


Bonjour! Dans Laravel je suis face à un problème de fonction qui ne s'execute pas. Pour le mettre en evidence j'ai simplifié ma fonction appelante et j'ai mis deux lignes "return..." dans celle qui est appelée, deux lignes qui auraient dû me renvoyer chacune leur texte à l'ecran dès premier passage dans ma fonction. Tout le reste de la fonction appelante s'éxecute correctement quand je le décommente, sauf cet appel initial. Je joins les images juste en dessous. Le résultat est un ecran blanc sur localhost/nomdusite/public/affich.


Du coup j'ai taché de simplifier tout ça et j'ai créé une route/contrôleur/vue dédiée à ce test très simple. Je vous met en dessous les images du test et du résultat : c'est pareil, le texte derrière return ne s'affiche pas. Je sens que j'ai encore fait une erreur toute con, et ce qui l'est encore plus, c'est que je la vois pas.



le résultat :



Configuration: Windows / Firefox 84.0

4 réponses

Messages postés
30923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 janvier 2021
3 162
Bonjour,

Afin que l'on puisse regarder ton code dans les meilleurs conditions et éventuellement en faire des copier/coller... merci de le poster en utilisant les BALISES DE CODE.
Explications ( à lire ENTIEREMENT !! ) disponibles ici:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
30923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 janvier 2021
3 162
A noter que ta fonction test() ne contient aucun return
Et que pour afficher... il faudrait, de toutes façons faire un echo quelque-part ...
Messages postés
9
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
26 décembre 2020

ok je remet le code de la fonction appelée :
<?php

namespace App\Http\Controllers;
use Session;
use Illuminate\Http\Request;

class questionnaireController extends Controller
{
    
	public function flushSession(){
		return 'debut d\'exec de flushSession';
        if (Session::get('LAST_ACTIVITY') && (time() - Session::get('LAST_ACTIVITY') > 3 )) {
            Session:flush();
            }
        Session::put('LAST_ACTIVITY', time());
        return 'fin d\'exec de flushSession';
        }


puis celle de la fonction appelante :

 public function affich(){
    	$this->flushSession();
    	/*$salarie = Session::get('salarie');
    	$oui = Session::get('oui');
    	$non = Session::get('non');
    	$situation = Session::get('situation');
    	$travail = Session::get('travail');
    	$manqueTemps = Session::get('manqueTemps');
    	$base = "";
    	if(isset($salarie)) {
    		Session::flush();
			return view('questionnaire', ['base' => null, 'salarie' => 'ok', 'oui' => null, 'travail' => null, 'manqueTemps' => null]);
    		//afficher "Etes vous fonctionnaire?"
    	}
    	else if(isset($oui) || isset($manqueTemps))  {
    		Session::flush();
    		return view('questionnaire', ['base' => null, 'salarie' => null, 'oui' => 'ok', 'travail' => null, 'manqueTemps' => 'ok']);
    		//afficher la vue de non éligibilité
    	}
    	else if(isset($travail)) {
    		Session::flush();
    		Session::put('eligibilite', 'ok'); 
    		return view('eligibilite');
    		//afficher la vue d'éligibilité
    	}
    	else if(isset($non) || isset($situation)) {
    		Session::flush();
    		return view('questionnaire', ['base' => null, 'salarie' => null, 'oui' => null, 'travail' => 'ok', 'manqueTemps' => null]);
    		//afficher "Combien d'années avez-vous travaillé en France dans votre vie?"
    	}
    	else {
    		return 'Temps d\'attente réponse trop long';*/
    	}



et le code du test : fichier web.php

Route::get('test','App\Http\Controllers\testController@test'
)->name('test');



contrôleur :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class testController extends Controller
{
    public function flushSession(){
		return 'debut';
        }

    public function test(){
    	$this->flushSession();
    }
}

?>


vue insérée dans un template :

@extends('template')

@section('title', 'Programme 1')

@section('contenu')
        <!-- Navigation-->
        <nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
            <div class="container">
                <a class="navbar-brand js-scroll-trigger"><span style="color: #dc3545">NOM DE L'ECOLE</span></a>
                <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
                    Menu
                    <i class="fas fa-bars ml-1"></i>
                </button>
                <div class="collapse navbar-collapse" id="navbarResponsive">
                    <ul class="navbar-nav text-uppercase ml-auto">
                        <li class="nav-item"><a class="nav-link js-scroll-trigger" href="#"><span style="color: #dc3545"><strong>Accueil</strong></span></a></li>
                        <li class="nav-item"><a class="nav-link js-scroll-trigger" href="#"><span style="color: #dc3545"><strong>Programme 1</strong></span></a></li>
                        <li class="nav-item"><a class="nav-link js-scroll-trigger" href="#"><span style="color: #dc3545"><strong>Programme 2</strong></span></a></li>
                        
                    </ul>
                </div>
            </div>
        </nav>
        <!-- Masthead-->
        <header>
	        <section class= "page-section" id="services">   
	            <div class="container" >
                
                </div>
                
                <div class="container text-center">
	               
	                <br><br><br><br><br><br><a class="btn btn-primary btn-xl text-uppercase js-scroll-trigger " href="#">Envoyer</a><br><br><br>
	            </div>
            </section>
        </header>
        <!-- Services-->
        
        <!-- Portfolio Grid-->
       
        <!-- Contact-->
        
        <!-- Footer-->
@endsection
Messages postés
30923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 janvier 2021
3 162
Tu sais que un return te fais sortir de la fonction ?
Un return n'affiche rien...

As-tu essayé de remplacer tes return par des écho ??
ah ben oui je viens de le faire dès que t'as parlé d'echo, et là j'ai pu voir que ma fonction d'abandon de variables session est bien executée... Merci
Messages postés
30923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 janvier 2021
3 162
Donc problème réglé... :-)

Pense à mettre le sujet en Résolu
Messages postés
9
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
26 décembre 2020

fait! En plus j'avais mis qu'un seul "deux points" entre session et flush, j'ai rectifié et du coup mes variables de session sont bien abandonnées dans le temps imparti