Une fonction pas commode (ou une noob bien larguée...)

Résolu
BonuxDu13 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
BonuxDu13 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
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 ...
0
BonuxDu13 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
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 ??
0
BonuxDu13
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Donc problème réglé... :-)

Pense à mettre le sujet en Résolu
0
BonuxDu13 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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
0