Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Frameworki _ [Symfony] podwojne dane w layout.php

Napisany przez: diasek7 17.02.2011, 14:30:08

witam,
jak zrobic poprawnie i ze standardami cos takiego, ze np jak w jobeecie mam w pliku layout.php wyswietlane pobieranie z bazy przez przez zmienna $sf_contect, a to znowu sie ustawia w pliku indexSuccess.php. a teraz chce dodac sobie menu po prawej i zeby mi tam wyswietalo tylko same nazwy firm. wiem, ze mozna wszystko napisac w tym pliku layout.php, ale tak sie raczej nie robi...

pozdrawiam!

Napisany przez: LBO 18.02.2011, 00:38:09

Odpowiedzią są sloty.

W layoucie:

  1. <?php if (!include_slot('sidebar')) : ?>
  2. Domyslna treść sidebara
  3. <?php endif ?>


a w szablonie akcji:

  1. <?php slot('sidebar') ?>
  2. Nowa treść sidebara.
  3. <?php end_slot() ?>



Napisany przez: diasek7 18.02.2011, 22:02:03

dzieki, sprobowalem jeszcze rozwiazania jak w jobeecie, stosujac include_partial ale mam problem...
robie tak jak w jobeecie (tam przerobilem i mi dzialalo dobrze)

tam jest taki przyklad

  1. //_list.php
  2. <table class="jobs">
  3. <?php foreach ($jobs as $i => $job): ?>
  4. <tr class="<?php http://www.php.net/echo http://www.php.net/fmod($i, 2) ? 'even' : 'odd' ?>">
  5. <td class="location">
  6. <?php http://www.php.net/echo $job->getLocation() ?>
  7. </td>
  8. <td class="position">
  9. <?php http://www.php.net/echo link_to($job->getPosition(), 'job_show_user', $job) ?>
  10. </td>
  11. <td class="company">
  12. <?php http://www.php.net/echo $job->getCompany() ?>
  13. </td>
  14. </tr>
  15. <?php endforeach; ?>
  16. </table>

i

  1. <?php include_partial('job/list', http://www.php.net/array('jobs' => $jobs)) ?>


i wywala mi blad, ze nie mozesz znalezc $jobs (u mnie innej, ale daje na przykladzie) w drugiej linijce pliku _list
gdzie moge szukac bledu? teraz robie sam od poczatku wszystko, wiec moze w jobeecie cos jeszcze dodane bylo? jestem dopiero tak jakby w 4 lekcji patrzac na to a z tym partialami jest w 7.

pozdrawiam

Napisany przez: destroyerr 18.02.2011, 22:20:45

Cytat
(u mnie innej, ale daje na przykladzie)

Dokładnie tutaj powinien być błąd. Nie przesyłasz odpowiedniej zmiennej, a jakiej to już nie jestem w stanie Ci powiedzieć.

Napisany przez: diasek7 18.02.2011, 23:39:44

probowalem roznymi sposobami i doszedlem do tego, ze w ogole w pliku layout.php nie lapie mi zmiennej....

w pliku showSuccess.php jest cos takiego:

  1. <?php http://www.php.net/echo $test_news ->getId() ?>


i nawet jak w calym pliku jest tylko to to dziala poprawnie, bo sie wyswietla numer ID.

jednak jak skopiuje tylko to do do pliku layout.php to wywala blad, ze nie zmienna niezdefinowana oraz Call to a member function getId() on a non-object in

no wiec kopiuje z pliku IndexSucces.php
i to pobieranie ID obejmuje

  1. <?php foreach ($test_newss as $i => $test_news): ?>
  2. <?php http://www.php.net/echo $test_news ->getId() ?>
  3. <?php endforeach; ?>


i wtedy blad ze nie zna zmiennej $test_newss oraz Invalid argument supplied for foreach() in

jesli jednak tos amo robie w pliku IndexSuccess.php drugi raz to dziala normalnie, ale to niezbyt poreczne. jak zrobic, zeby w pliku layout.php lapalo te zmienne?

Napisany przez: bela 19.02.2011, 00:33:30

Spróbuj components zamiast partials

http://www.symfony-project.org/jobeet/1_4/Doctrine/en/19#chapter_19_language_switching

Napisany przez: diasek7 19.02.2011, 18:56:16

siedze nad tym od kilku godzin i nic...


mam taki blad jak tutaj http://oldforum.symfony-project.org/index.php/t/5922/ i nic nie pomaga...

zrobilem plik
component.class.php

  1. <?php
  2. class blogComponents extends sfComponents
  3. {
  4. public function executeMenu(sfWebRequest $request)
  5. {
  6. }
  7. }

plik _menu.php
  1. <?php $blog->getTitle() ?>


w layoucie

<?php include_component('blog', 'menu') ?>

i wywala
Kod
The component does not exist: "blog", "menu".


wyglada na to, ze po prostu nie lapie tego componentu. pamietam, ze mialem podobny problem w jobeecie jak sie dodawalo jezyk, ale juz nie pamietam jak to rozwiazalem. wie ktos moze gdzie moze byc blad? albo co raczej trzeba zrobic, zeby zlapal ten komponent? symfony cc robilem, probowalem tez dodawac do pliku view.yml
components:
menu: [menu, default]


ale to nic nie dalo.


edit:
heh zrobilem to w jobeecie i dziala... czego brakuje w poczatkowej aplikacji, tylko czego?

Napisany przez: LBO 19.02.2011, 19:35:17

Plik z komponentami to components.class.php

Napisany przez: diasek7 19.02.2011, 19:47:20

ehh na ktorejs stronie byl blad i zle kopiowalem sad.gif pol dnia stracone na takiej glupocie. w dodatku przed chwila sprobowalem zrobic tak jak proponowales za pierwszym razem na slotach i dziala pieknie.
wielkie dzieki za pomoc

Napisany przez: LBO 19.02.2011, 20:01:03

Cytat(diasek7 @ 19.02.2011, 19:47:20 ) *
w dodatku przed chwila sprobowalem zrobic tak jak proponowales za pierwszym razem na slotach i dziala pieknie.
wielkie dzieki za pomoc


Możesz połączyć obie rzeczy i ładować komponent do slotu.


Napisany przez: diasek7 23.02.2011, 17:19:57

dzieki wielkie za pomoc, ale mam jeszcze jedno pytanie... jak najprosciej w takim komponencie odwolywac sie do dwoch tabel?
mam to zrobione tak, ze mam tabele CATEGORY i tabele BLOG. zrobilem ten komponent w module BLOG i dziala ok, ale chce wydobyc nazwe kategorii i zaczynaja sie schody. jak sie do niej odwolac? mam oczywiscie w tabeli BLOG category_id, no i moglbym w locie zamieniac na nazwy przez PHP, ale wolalbym sie dowiedziec jak sie odwolywac, bo potem sie to moze mi przydac.

pozdrawiam! smile.gif

Napisany przez: bikerszymek 23.02.2011, 18:54:21

O nic prostrzego chyba nie mogles juz zapytac:

  1. http://www.php.net/echo $Object->getAliasJakiMaszWSchemaDoKategorii(); // najprawdopodobniej echo $Object->getCategory();


I nie ma to nic wspolnego z komponentami

Napisany przez: diasek7 25.02.2011, 13:12:19

hmm no rzeczywiscie to banalne, ale na jakiej to zasadzie dziala? w foreignAlias: mam wpisane Categories. Obiekty nazywaja sie Category i Blog.
teraz wystarczylo, ze zrobilem $blog->getCategory() i pobralo mi nazwe kategorii, a nie uzylem tego aliasu.
A jak w tabeli Category mam jeszcze pole opis? to jak sie do tego dostac? bo domyslnie mi bierze Name. Da sie tak w jednym pliku? musialbym chyba osobny komponent robic i tam zrobic akcje pobierania danych z kategorii?

-----

to jednak tez nie dziala do konca tak jak chcialem.

chce zrobic cos takiego, ze wylistuje mi kazda kategorie a dla niej kazdego newsa, czyli cos takiego:

Kategoria1:
--- news1
--- news2
Kategoria2:
--- news21
---news22

albo po prostu jak najprosciej zrobic w jednym komponencie cos takiego:

<?php foreach ($categories as $category): ?>
<?php echo $category->getCategory() ?>
<?php endforeach; ?>


<?php foreach ($newss as $i => $news): ?>
<?php echo $news->getTitle() ?>
<?php endforeach; ?>

czyli co dodac w akcjach? nie da sie chyba zrobic w jednej akcji odwolan do dwoch roznych tabel....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)