Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]nieaktywne ogloszenie
mareknn
post 21.02.2011, 12:19:25
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.01.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
LBO
post 21.02.2011, 15:41:34
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mareknn
post 21.02.2011, 17:25:02
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.01.2011

Ostrzeżenie: (0%)
-----


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

Ten post edytował mareknn 21.02.2011, 17:25:56
Go to the top of the page
+Quote Post
destroyerr
post 21.02.2011, 17:37:04
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
mareknn
post 21.02.2011, 18:32:13
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.01.2011

Ostrzeżenie: (0%)
-----


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:)
Go to the top of the page
+Quote Post
LBO
post 21.02.2011, 18:40:44
Post #6





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 07:52