Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa BreadCrumbs (Okruszki chleba)
Forum PHP.pl > Forum > PHP
Raven1122
Witam,

Mam mały problem z klasą do okruchów. Mianowicie:
Po uruchomieniu skryptu pokazuje mi się: "Array" i nic więcej.

Kod wygląda tak:
  1. <?php
  2.  
  3. /*****BreadCrumbs Class*********
  4. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  5. *************Author*************
  6. *******Michał Staniewski********
  7. */
  8.  
  9.  
  10. class BreadCrumbs{
  11.  
  12. /**
  13. *Zmienna $items przechowywująca okruchy chleba
  14. */
  15. private $items = array();
  16.  
  17. protected static $_instance=null;
  18.  
  19. public static function getInstance(){
  20. if(self::$_instance === null){
  21. self::$_instance = new self();
  22. }
  23. return self::$_instance;
  24. }
  25. /**
  26. Metoda pozwalająca dodawać główny okruszek
  27. */
  28. public function HomeLink($title, $url){
  29. $this->items = array("title" => $title, "url" => $url);
  30. }
  31. /**
  32. Metoda pozwalająca dodawać okruszki
  33. */
  34. public function AddLink($title, $url){
  35. $this->items = array("title" => $title, "url" => $url);
  36. }
  37. /**
  38. Metoda wyświetlająca okruczki
  39. */
  40. public function Crumbs(){
  41. $crumbs = array();
  42.  
  43. if(!empty($this->items)){
  44. foreach($this->items as $crumb){
  45. $crumbs[] = "<a href='".$crumb['url']."'>".$crumb['title']."</a>";
  46. }
  47. return $crumbs;
  48. }
  49. }
  50.  
  51. }
  52.  
  53.  
  54.  
  55.  
  56.  
  57. ?>


i index.php

  1. <?php
  2. require_once("BreadCrumbs.class.php");
  3. $breadcrumbs = BreadCrumbs::getInstance();
  4.  
  5. $breadcrumbs->HomeLink("Home", "/");
  6. $breadcrumbs->AddLink("This page", "/this-page");
  7.  
  8. echo $breadcrumbs->Crumbs();
  9. ?>


Jeszcze pytanie odnośnie ulepszania tej klasy. Chciałbym żeby ona sama się uzupełniała wraz z przechodzeniem na podstrony ale nie mam niestety tej idei jak to zrobić wink.gif Prosiłbym o nakierowanie
memory
kolego

  1. $crumbs = array();
  2. $this->items as $crumb

powinno być

  1. $crumbs = array();
  2.  
  3. if(!empty($this->items)){
  4. foreach($this->items as $item){
  5. $crumbs[] = "<a href='".$item['url']."'>".$item['title']."</a>";
  6. }
  7. return $crumbs;
  8. }


nawet skopiować było trudno smile.gif
Raven1122
a skad sie wzielo as $item?
memory
$this->item to tablica, nastepnie robisz petle i każdą wartość przypisujesz do zmiennej np $item, może być co innego

http://php.net/manual/en/control-structures.foreach.php
Raven1122
ale i tak to nie wnosi nic bo dalej pisze Array
Evinek
Powód jest taki, że próbujesz wyświetlić tablice.
Masz dwa sposoby na to.

Pierwszy:
  1. $crumbs = $breadcrumbs->Crumbs();
  2. foreach($crumbs as $crumb){
  3. echo $crumb.'<br />';
  4. }


Drugi:
W funkcji Crumbs zamiast do tablicy dodawać tekst stwórz string.
Na górze: $crumbs = '';
W pętli:
$crumbs .= "<a href='".$item['url']."'>".$item['title']."</a>";

Lecz polecam pierwszy ponieważ możesz lepiej operować nad linkami. Dodatkowo przemyśl zmiane z " na '. Lepsza optymalizacja.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.