Bonjour , à tous je débute sous Laravel et en POO , je suis en train de créer un site de pronostics de paris sportifs , et une de mes vues qui est la page d'accueil , j'ai un tableau avec tous les derniers résultats
comme ceci :
Voici la boucle de mon tableau de résultats
@foreach ($bets as $bet)
<tr>
<td>{{$bet->user->name}}</td>
<td>{{ $bet -> sport}}</td>
<td>{{ $bet -> event}}</td>
<td>{{ $bet -> date_event}}</td>
<td>{{ $bet -> prognosis}}</td>
<td>{{ $bet -> cost}}</td>
<td>{{ $bet -> stake}}</td>
<td></td>
<td>{{ $bet -> result}}</td>
</tr>
@endforeach
Je voudrais simplement pouvoir créer plusieurs fonctions , pour pouvoir me retourner des icones selon le texte que renvoie cette requête , comme par exemple pour le sport {{ $bet->sport}} j'aurais besoin d'une fonction de ce style getIconSport( $bet->sport); qui me retourne l'icone football ou tennis etc.. une fonction toute bête comme ceci , que je fesait en PHP pure.
// Retourne l'icone du sport
function getIconSport($sport, $type)
{
if ($sport == "Football") {
?>
<img class="sport_logo" src="public/img/football.png" alt="">
<?php
} elseif ($sport == "Tennis") {
?>
<img class="sport_logo" src="public/img/tennis.png" alt="">
<?php
} elseif ($type == "Combiné") {
?>
<img class="sport_logo" src="public/img/combi.png" alt="">
<?php
}
}
Si quelqu'un aurais une solution car je ne c'est pas comment faire , ça me permettrais d'avancer.
Bonjour.
Tu pourrais par exemple utiliser des accesseurs (Accessors).
Par exemple :
public function getIconSport()
{
$icon = '';
switch ($this->sport)
{
case 'Football':
$icon = '...';
break;
// etc ...
}
return $icon;
}
J'obtien cette erreur
Using $this when not in object context
j'ai mis la fonction en static sinon ça planter
Mon appelle de fonction est t-il bon dans mon controler ?
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Bet_simple;
//use App\Http\Controllers\BetsController;
class HomeController extends Controller
{
public function home()
{
$nbTipsters = User::countTipsters();
$tipsters = User::getTeam();
$bets = Bet_simple::getBetsIsClosed();
$nbBets = Bet_simple:: countBetsIsClosed();
$sport = Bet_simple::getIconSport();
//$test = Bet_simple:: test();
return view('pages/home', [
//'test' =>$test,
'sport'=> $sport,
'nbBets' => $nbBets,
'bets' => $bets,
'nbTipsters' => $nbTipsters,
'tipsters' => $tipsters,
]);
}
}
dois-je appelé ma fonction comme ceci
<td><img class="sport_logo" src="img/{{ $bet->getIconSport}}.png" alt=""></td>
La fonction est à créer dans ton modèle : Eloquent: Mutators.
Ce n'est pas dans ton controlleur que tu dois utiliser la fonction, mais depuis ta vue, exemple :
<td><img class="sport_logo" src="img/{{ $bet->icon_sport }}.png" alt=""></td>
Ok j'ai donc suprimmer mon appelle de fonction dans mon controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Bet_simple;
//use App\Http\Controllers\BetsController;
class HomeController extends Controller
{
public function home()
{
$nbTipsters = User::countTipsters();
$tipsters = User::getTeam();
$bets = Bet_simple::getBetsIsClosed();
$nbBets = Bet_simple:: countBetsIsClosed();
//$sport = Bet_simple::getIconSport();
//$test = Bet_simple:: test();
return view('pages/home', [
//'test' =>$test,
//'sport'=> $sport,
'nbBets' => $nbBets,
'bets' => $bets,
'nbTipsters' => $nbTipsters,
'tipsters' => $tipsters,
]);
}
}
et dans vue
<td><img class="sport_logo" src="img/{{ $bet->getIconSport}}.png" alt=""></td>
Voici ma fonction dans mon model
public function getIconSport()
{
$icon = '';
switch ($this->sport)
{
case 'Football':
$icon = 'football';
break;
// etc ...
}
return $icon;
}
J'obtien cette erreur:
App\Bet_simple::getIconSport must return a relationship instance. (View: D:\Documents\GitHub\TeamBet-Laravel\resources\views\pages\home.blade.php)
ça fonctionne !! j'avais oublié les () à ma fonction , un grand merci à toi car plusieurs personnes me proposer des solutions mais la tienne est la plus simple