login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[php OOP / smarty] "Object of class Acteur could not be converted to string" foutmelding na poging implode ", "

Offline Eric1978 - 23/10/2011 18:26 (laatste wijziging 23/10/2011 18:48)
Avatar van Eric1978Lid Hallo allemaal,

Ik heb nu via in eerste instantie een object array variabelen "assigned" aan smarty.

Ik wil echter dat in de array een ", " staat tussen de resultaten.
Op een of andere manier krijg ik het met een implode niet voor elkaar. Ik krijg de melding: "Object of class Acteur could not be converted to string".

Ik heb ook al geprobeerd in smarty iets te doen maar het lukt niet.
Kan iemand zien waar dit aan ligt?

Groeten Eric

Mijn script in PHP:
  1. $film = new Film($_GET['id']);
  2. $id = $film->getId();
  3. $smarty->assign("film", $film);
  4.  
  5. $result = mysql_query("SELECT * FROM acteur WHERE film_id = $id");
  6. while($row = mysql_fetch_assoc($result)) {
  7. $acteur = new Acteur();
  8. $acteur->initByDatabaseRow($row);
  9. $acteurs[] = $acteur;
  10. }
  11. $test = implode(', ', $acteurs);
  12. $smarty->assign("test", $test);
  13.  
  14. $smarty->assign("id", $id);
  15. $smarty->assign("acteurs", $acteurs);
  16. $template = "details.tpl";


En in smarty:
  1. {foreach from=$test item=acteur}
  2. {$acteur->getNaam('$id')}
  3.  
  4. {/foreach}





3 antwoorden

Gesponsorde links
Offline Koen - 23/10/2011 19:17
Avatar van Koen PHP expert Je wilt een Array van objecten van de klasse "Acteur" omzetten naar een tekenreeks waarin de acteurs worden gescheiden door een komma. Mooi, maar zoals de foutmelding al zegt kan je een object niet omzetten naar een tekenreeks. Je moet een array van namen ($acteur->getNaam() oid) meegeven als argument bij PHP.net: implode, geen array van objecten.
Offline Eric1978 - 23/10/2011 19:49 (laatste wijziging 23/10/2011 20:28)
Avatar van Eric1978 Lid Ok, dan zal ik het toch in smarty in moeten stellen, omdat ik daar pas gebruik ga maken van mijn "naam" array. Alleen in smarty zelf kreeg ik de implode niet een de praat met een juiste smarty code.

Heeft iemand nog een andere optie?

code die ik gebruikte:
  1. {foreach from=$acteurs item=acteur}
  2. {', '|implode:$acteur->getNaam('$id')}
  3. {/foreach}

Offline Ontani - 24/10/2011 08:38 (laatste wijziging 24/10/2011 08:44)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Je had het ook zonder foreach kunnen doen en de __toString functie toevoegen aan uw Acteur klasse.

  1. class Acteur {
  2. ...
  3.  
  4. public function __toString() {
  5. return $this->name;
  6. }
  7.  
  8. }


Zo geeft bijvoorbeeld:

  1. class Acteur {
  2.  
  3. private $firstname;
  4. private $lastname;
  5.  
  6. public function Acteur($first, $last) {
  7. $this->firstname = $first;
  8. $this->lastname = $last;
  9. }
  10.  
  11. public function __toString() {
  12. return $this->firstname;
  13. }
  14.  
  15. }
  16.  
  17. $acteurs = Array();
  18.  
  19. $acteurs[] = new Acteur("Arnold", "Schwarzenegger");
  20. $acteurs[] = new Acteur("Robert", "De Niro");
  21. $acteurs[] = new Acteur("Jean-Claude", "Van Damme");
  22. $acteurs[] = new Acteur("Jim", "Parsons");
  23. $acteurs[] = new Acteur("Johnny", "Galecki");
  24.  
  25. echo implode(', ', $acteurs);


Arnold, Robert, Jean-Claude, Jim, Johnny

Als resultaat
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s