Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]nieaktywne ogloszenie
Forum PHP.pl > Forum > PHP > Frameworki
mareknn
witam,
moglby ktos mnie naprowadzic jak zrobic cos w tym stylu:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/06 - Secure the Job Page

zrobilem tak jak tam jest i dziala, ale chcialbym, zeby po wejsciu w nieaktywne ogloszenie mozna bylo ustawic strone na ktorej jest napisane ze ogloszenie nieaktywne. wiem, ze mozna to zrobic z plikiem 404, ale nie chcialbym go zmieniac, bo nawet po wejsciu na nieaktywna strone w projekciep pojawi sie, ze ogloszenie nieaktywne. ewentualnie jak mozna przechwycic to co jest przesylane i potem w tym pliku zastosowac IF jesli to bylo od funkcji retrieveActiveJob i IF od pozostalych.

pozdrawiam
LBO
Pomiń routing i sprawdź bezpośrednio w akcji:

  1. public function executeShow(sfWebRequest $request)
  2. {
  3. $job = $this->getRoute()->getObject();
  4.  
  5. if(!$job->isActive()) {
  6. return 'Inactive';
  7. }
  8.  
  9. return 'Success';
  10. }


Teraz zostało tobie tylko stworzenie szablonu showInactive.php i zaimplementowanie metody isActive() na modelu Job.
mareknn
dzieki, ale cos mi to nie wychodzi...

zrobilem tak:


  1. public function executeShow(sfWebRequest $request)
  2. {
  3. $job = $this->getRoute()->getObject();
  4.  
  5. if(!$job->isActive($this->getId())) {
  6. $this->redirect('Nieaktywne');
  7. }
  8.  
  9. return 'Success';
  10. }


nie wiem jak by mialo dzialac to return w Twoim przykladzie, wiec lepiej mi bedzie uzyc redirect. a to return Success na dole musi byc? no bo teoretycznie jak ifa ominie to powinien dzialac tak jak zwykle, a normalnie tego returna nie ma tam.

i teraz tak
w pliku JobeetJob.class dodalem:
  1. public function isActive(sfWebRequest $request){
  2. $id= $request->getParameter('id');
  3. $q = Doctrine_Query::create()
  4. ->from('JobeetJob')
  5. ->andWhere('id = ?', $id )
  6. ->andWhere('isactive = ?', true);
  7.  
  8. return $q;
  9. }


i mam problem, bo nie wiem teraz jak wyciagnac ID... wywala mi blad
Cytat
sfException
Call to undefined method jobActions::getId.


a ogolnie poza tym to dobrze robie? bo nie wiem czy sie teraz meczyc i szukac jak pobrac to ID...
mam bardzo male doswiadczenie w programowaniu

dziekuje za pomoc smile.gif
destroyerr
Tylko, że ten redirect, który zrobiłeś, moim zdaniem nie ma sensu. LBO podał Ci rozwiązanie. Jeśli czegoś nie rozumiesz, to dlaczego nie zajrzysz do dokumentacji?

Kod w Twoim kontrolerze najpierw pobiera obiekt z bazy, Ty chcesz pobrać jego id, i znowu w bazie sprawdzać czy pobrany już obiekt jest aktywny. Pomyśl chwilę i popatrz na kawałeczek kodu, który już dostałeś.
Poza tym masz pomieszane, metoda JobeetJob::isActive() nie powinna pobierać nic z bazy. Jeśli chcesz coś pobierać to w klasie JobeetJobTable.

Cytat
i mam problem, bo nie wiem teraz jak wyciagnac ID... wywala mi blad

Nic Ci ten błąd nie mówi?
mareknn
dzieki, wystarczylo zrobic isactive smile.gif

mam jeszcze pytanie przy okazji, bo napisales, ze jak sie z bazy pobiera to w Table, ale w jobeecie jest taki przyklad w pliku
JobeetCategory.class.php:
  1. public function getActiveJobsQuery()
  2. {
  3. $q = Doctrine_Query::create()
  4. ->from('JobeetJob j')
  5. ->where('j.category_id = ?', $this->getId());
  6.  
  7. return Doctrine_Core::getTable('JobeetJob')->addActiveJobsQuery($q);
  8. }

dlatego to jest w tym pliku, a nie JobeetCategoryTable.class.php?

pozdrawiam:)
LBO
JobeetCategory::getActiveJobsQuery() niczego nie pobiera. Ona tylko zwraca zmodyfikowany obiekt zapytania Query. Zasadniczo samo pobranie dzieje się już poza modelem... mnie osobiście się ten sposób nie podoba, ale nie jest taki do końca zły.
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.