Make an Iterable array of objects in PHP for Twig -


i'm trying pass array of objects parameter view rendering. problem when try iterate on , check if it's iterable, isn't.

this how buil array:

public function filtracalciatori($mintiritotali, $mintiriporta, $mingolfatti, $mingolsubiti, $minassist,                                  $minfallifatti, $minfallisubiti, $minpercentualepassaggiriusciti,                                  $minammonizioni, $minespulsioni, $maxtiritotali, $maxtiriporta,                                  $maxgolfatti, $maxgolsubiti, $maxassist, $maxfallifatti, $maxfallisubiti,                                  $maxpercentualepassaggiriusciti, $maxammonizioni, $maxespulsioni) {     $statement = $this->conn->prepare(         "select calciatore,             sum(tiri_totali) tiri_totali,             sum(tiri_porta) tiri_porta,             sum(falli_fatti) falli_fatti,             sum(falli_subiti) falli_subiti,             (sum(percentuale_passaggi_riusciti) / count('calciatore')) percentuale_passaggi_riusciti,             sum(gol_fatti) gol_fatti,             sum(gol_subiti) gol_subiti,             sum(assist) assist,             sum(ammonizioni) ammonizioni,             sum(espulsioni) espulsioni,             count('calciatore') partite_giocate                     statistiche_calciatore         group (calciatore)         having           tiri_totali >= ? , tiri_totali <= ? ,           tiri_porta >= ? , tiri_porta <= ? ,            falli_fatti >= ? , falli_fatti <= ? ,            falli_subiti >= ? , falli_subiti <= ? ,            percentuale_passaggi_riusciti >= ? , percentuale_passaggi_riusciti <= ? ,            gol_fatti >= ? , gol_fatti <= ? ,            gol_subiti >= ? , gol_subiti <= ? ,            assist >= ? , assist <= ? ,            ammonizioni >= ? , ammonizioni <= ? ,            espulsioni >= ? , espulsioni <= ?;");      $statement->bind_param("iiiiiiiiiiiiiiiiiiii", $mintiritotali, $maxtiritotali, $mintiriporta, $maxtiriporta, $minfallifatti, $maxfallifatti,         $minfallisubiti, $maxfallisubiti, $minpercentualepassaggiriusciti, $maxpercentualepassaggiriusciti, $mingolfatti, $maxgolfatti, $mingolsubiti,         $maxgolsubiti, $minassist, $maxassist, $minammonizioni, $maxammonizioni, $minespulsioni, $maxespulsioni);     $statement->execute();     $result = $statement->get_result();      if ($result->num_rows > 0) {         $arraystatistiche[] = array();          ($i = 0; $row = $result->fetch_assoc(); $i++) {             $arraystatistiche[] = new statistichecalciatore(row["calciatore"], $row["tiri_totali"], $row["tiri_porta"],                 $row["falli_fatti"], $row["falli_subiti"], $row["percentuale_passaggi_riusciti"], $row["gol_fatti"],                 $row["gol_subiti"], $row["assist"], $row["ammonizioni"], $row["espulsioni"], $row["partite_giocate"]);         }          return $arraystatistiche;     } else {         return null;     } } 

this pass array parameyer rendering:

        return $this->render(":staff:viewcalciatorifiltrati.html.twig", array("array_statistiche" => $arraystatistiche)); 

ans here try display content:

{% if array_statistiche iterable %}     {% statistiche_calciatore in array_statistiche %}         hello {{ statistiche_calciatore }}!     {% endfor %} {% else %}     not iterable {% endif %} 

there many wrongs in here... of course won't work...

1) ? $arraystatistiche[] = array();

this may on purpose, you're creating multidimensional array...
, same :

$arraystatistiche=array(0=>array()); 

if wanted init array, $arraystatistiche=array();


2) : {% if array_statistiche iterable %} can't works

because of how did init array, won't works.
used $arraystatistiche[]= push result in array, thus, looks this:

$arraystatistiche=(array(     0=>array()     1=>array(your_multidimensional_messed_result_start_here) )); 

you need {% if array_statistiche.1 iterable %} find need.
, yet, might not works because of next problem...


3) statistichecalciatore entity made of arraycollections ?

my guess try set arrays non-array vars. not new statistichecalciatore isn't needed begin with.

another problem how read sql result set. how should done :

while($row=$result->fetch_assoc()) {     array_push($arraystatistiche, $row) } 

nothing more. way did keep returning null , undefined variables.


4) use symfony dql

symfony have lot of tools make easy you...
why using own mysqli connexion?! go , use symfony dql...

i add don't find having suited/needed query, where enough same job.


[code rework]

src/yourbundle/repository/statistichecalciatorerepository.php

be careful here, used sql columns name, dql use php entity variable name.
unless can manage changes on own, suggest post entity statistichecalciatore can correct answer.

public function filtracalciatori($mintiritotali, $mintiriporta, $mingolfatti, $mingolsubiti, $minassist, $minfallifatti, $minfallisubiti, $minpercentualepassaggiriusciti, $minammonizioni, $minespulsioni, $maxtiritotali, $maxtiriporta, $maxgolfatti, $maxgolsubiti, $maxassist, $maxfallifatti, $maxfallisubiti, $maxpercentualepassaggiriusciti, $maxammonizioni, $maxespulsioni) {     return $this->getentitymanager()                 ->getrepository('yourbundle:statistichecalciatore')                 ->createquerybuilder('sc')                 ->select("sc.calciatore", "sum(sc.tiri_totali) tiri_totali", "sum(sc.tiri_porta) tiri_porta", "sum(sc.falli_fatti) falli_fatti", "sum(sc.falli_subiti) falli_subiti", "(sum(sc.percentuale_passaggi_riusciti) / count('sc.calciatore')) percentuale_passaggi_riusciti", "sum(sc.gol_fatti) gol_fatti", "sum(sc.gol_subiti) gol_subiti", "sum(sc.assist) assist", "sum(sc.ammonizioni) ammonizioni", "sum(sc.espulsioni) espulsioni", "count('sc.calciatore') partite_giocate")                 ->where("tiri_totali >= :mintiritotali")                 ->andwhere("tiri_totali <= :maxtiritotali")                 ->andwhere("tiri_porta >= :mintiriporta")                 ->andwhere("tiri_porta <= :maxtiriporta")                 ->andwhere("falli_fatti >= :minfallifatti")                 ->andwhere("falli_fatti <= :maxfallifatti")                 ->andwhere("falli_subiti >= :minfallisubiti")                 ->andwhere("falli_subiti <= :maxfallisubiti")                 ->andwhere("percentuale_passaggi_riusciti >= :minpercentualepassaggiriusciti")                 ->andwhere("percentuale_passaggi_riusciti <= :maxpercentualepassaggiriusciti")                 ->andwhere("gol_fatti >= :mingolfatti")                 ->andwhere("gol_fatti <= :maxgolfatti")                 ->andwhere("gol_subiti >= :mingolsubiti")                 ->andwhere("gol_subiti <= :maxgolsubiti")                 ->andwhere("assist >= :minassist")                 ->andwhere("assist <= :maxassist:")                 ->andwhere("ammonizioni >= :minammonizioni")                 ->andwhere("ammonizioni <= :maxammonizioni")                 ->andwhere("espulsioni >= :minespulsioni")                 ->andwhere("espulsioni <= :maxespulsioni")                 ->setparameters(array(                     new parameter('mintiritotali', $mintiritotali),                     new parameter('maxtiritotali', $maxtiritotali),                     new parameter('mintiriporta', $mintiriporta),                     new parameter('maxtiriporta', $maxtiriporta),                     new parameter('minfallifatti', $minfallifatti),                     new parameter('maxfallifatti', $maxfallifatti),                     new parameter('minfallisubiti', $minfallisubiti),                     new parameter('maxfallisubiti', $maxfallisubiti),                     new parameter('minpercentuale_passaggi_riusciti', $minpercentualepassaggiriusciti),                     new parameter('maxpercentuale_passaggi_riusciti', $maxpercentualepassaggiriusciti),                     new parameter('mingolfatti', $mingolfatti),                     new parameter('maxgolfatti', $maxgolfatti),                     new parameter('mingolsubiti', $mingolsubiti),                     new parameter('maxgolsubiti', $maxgolsubiti),                     new parameter('minassist', $minassist),                     new parameter('maxassist', $maxassist),                     new parameter('minammonizioni', $minammonizioni),                     new parameter('maxammonizioni', $maxammonizioni),                     new parameter('minespulsioni', $minespulsioni),                     new parameter('maxespulsioni', $maxespulsioni)                 ))                 ->getquery()                 ->getarrayresult(); } 


src/yourbundle/controller/statistichecalciatorecontroller.php

public function stataction() {     $em=$this->getdoctrine()->getmanager();     $arraystatistiche=$em->getrepository('yourbundle:conference')->filtracalciatori($mintiritotali, $mintiriporta, $mingolfatti, $mingolsubiti, $minassist, $minfallifatti, $minfallisubiti, $minpercentualepassaggiriusciti, $minammonizioni, $minespulsioni, $maxtiritotali, $maxtiriporta, $maxgolfatti, $maxgolsubiti, $maxassist, $maxfallifatti, $maxfallisubiti, $maxpercentualepassaggiriusciti, $maxammonizioni, $maxespulsioni);     return $this->render(":staff:viewcalciatorifiltrati.html.twig", array("array_statistiche" => $arraystatistiche)); } 

src/yourbundle/entity/statistichecalciatore.php

you seems on symfony 3, should case, check if repository declared in entity

/**  * statistichecalciatore  *  * @orm\table(name="statistiche_calciatore")  * @orm\entity(repositoryclass="yourbundle\repository\statistichecalciatorerepository")  */ class statistichecalciatore { ... } 

[code rework end]


[lecture time]

well, guess have right it, took me quite long time reply...

before trying use symfony, suggest review how php works.
there lot of errors shouldn't made.
stated before, how init array or how read sql result example.
php.net here you... ;)

while kind enough provide answer, understand first , last time answer such question.
answering while correcting mess takes long, if wasn't on holidays, , bored, wouldn't have done either.
have care code, , not post things full of errors.

[lecture time end]

well, it's time me put second coat of paint on walls...
hope helped you. ;)


Comments

Popular posts from this blog

python - How to insert QWidgets in the middle of a Layout? -

python - serve multiple gunicorn django instances under nginx ubuntu -

module - Prestashop displayPaymentReturn hook url -