Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Dziwny problem... przekazywanie wartości zmiennych i...

Witam,
Dopiero zaczynam swoją przygodę z Symfony, więc sorry za być może trywialne pytania. Zakupiłem książkę PHP5 Programowanie z wykorzystaniem Symfony, CakePHP i ZendFramework.
Ale do rzeczy...
Środowisko które wykorzystuję to najnowsza wersja Ubuntu i z PHP5.3 i do niej sf_sandbox w wersji 1.4 zciągnięty jako paczka zip ze strony projektu

Autor pisze że akcje dla danego modułu można zapisywać w jednym pliku actions.class.php (z tym jest ok) ale i każdą w oddzielnym w razie potrzeby. I tu pojawiają się moje problemy:
Tworzę akcje dla modułu powiedzmy
szukajOsobyAction.class.php
z zawartością:
class przedstawSieAction extends sfAction {
public function execute()
{
$this->setVar('moduleName', $this->getModuleName());
$this->actionName = $this->getActionName();
}
}
i do niej szablon w katalogu template przedstawSieSuccess.php o zawartości:

Moduł:<?echo $moduleName; ?>
Akcja:<?echo $actionName; ?>

Wywołanie modułu w przeglądarce generuje błąd 500.
Gdy jednak dodam w/w akcję do pliku actions.class.php

public function executePrzedstawSie(){
$this->setVar('moduleName', $this->getModuleName());
$this->actionName = $this->getActionName();
}
akcja działa prawie poprawnie tzn. nie działa tylko poprawnie zapis skrócony
$this->actionName = $this->getActionName();
jedynie
$this->setVar('actionName', $this->getActionName());

I jeszcze jedno pytanko... nie wiem dlaczego, ale z domyślnej paczki sf_sandbox v1.4 niestety ale nie wyświetlają mi się grafiki frameworka.

Pytanie moje jest gdzie szukać powodu takiego zachowania i jak je poprawić?

z góry dzięki za sugestieMaciej "Merlin" C. edytował(a) ten post dnia 12.06.11 o godzinie 23:00
Tomasz Madeyski

Tomasz Madeyski programista PHP/.NET

Temat: Dziwny problem... przekazywanie wartości zmiennych i...

otworz sobie akcje ktora generuje blad w srodowisku dev (masz dwa kontrolery dla aplikacji - index.php i nazwaAplikacji_dev.php, uruchom ten drugi) i dostaniesz komunikat co tak naprawde poszlo nie tak

Odnosnie braku grafiki - musisz
albo skonfigurowac apache tak zeby pod katalogiem web/sf miec katalog lib/vendor/symfony/data/web/sf/
albo (wg mnie metoda prostsza) zrobic linka symbolicznego w katalogu web
ln -s ../lib/vendor/symfony/data/web/sf sf

pzdr

konto usunięte

Temat: Dziwny problem... przekazywanie wartości zmiennych i...

Tomasz Madeyski:
albo (wg mnie metoda prostsza) zrobic linka symbolicznego w katalogu web
ln -s ../lib/vendor/symfony/data/web/sf sf

pzdr

w przypadku używania Windowsa należy skopiować folder sf z ../lib/vendor/symfony/data/web do głównego katalogu web projektu.

Co do pierwszego postu:
- nie spotkałem się jeszcze z zapisem
$this->setVar('actionName', $this->getActionName());

ja zawsze przekazuje z kontrolera do widoku zmienne poprzez "$this":D
- z tym też się nigdy nie spotkałem:
Tworzę akcje dla modułu powiedzmy
szukajOsobyAction.class.php
z zawartością:
class przedstawSieAction extends sfAction {

jakoś wg mnie lepsze jest załadowanie wszystkich akcji do jednego pliku niż rozwalanie ich po kilku-kilkudziesięciu:)Michał Majewski edytował(a) ten post dnia 14.06.11 o godzinie 07:27
Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Dziwny problem... przekazywanie wartości zmiennych i...

Dzięki za wskazówki. Widzę że w książce jest sporo zamieszania odnośnie choćby wersji Symfony co do której jest opis.
@Tomasz:
Okazało się faktycznie że robiąc sn grafika pojawił się w odpowiednim miejscu:)
@Michał:
No właśnie zapis który przytoczyłem jest dość mocno w książce promowany.
Swoją drogą mam problem też np. z obsługą formularzy poprzez
label_for czy input_tag - system zgłasza -call to undefined function
ale np. form_tag działa ok
Również dla klasy sfWebRequest w jednym miejscu interpreter zgłasza mi błąd
chodzi dokładnie o zapis:

$this ->iMetoda - $oRequest -> getMethod();
$this -> sMetodaNazwa =$oRequest -> getMethodName();

Niestety interpreter wskazuje że nie zna czegoś takiego jak getMethodName
Na szczęście index_dev.php potrafi naprowadzić na przyczynę błędu choć nie informuje o tym jak go rozwiązać ...

I tak jeszcze jedno pytanko.
Mam taki kawałek kodu:

public function executeOdbierzZdjecie(){
if ($this ->getRequest() -> hasFiles()){
$aZdjecia = $this -> getRequest() -> getFileNames();

$aZdjecie = $aZdjecia[0];
$this -> sNazwa = $this -> getRequest() -> getFileName($sZdjecie);
$this -> iRozmiar = $this -> getRequest() -> getFileSize($aZdjecie);
$this -> sTyp = $this -> getRequest() -> getFileType($aZdjecie);
$this -> bBlad = $this -> getRequest() -> hasFileError($aZdjecie);
$this -> sKatalogDocelowy = sfConfig::get('sf_upload_dir');
$this -> getRequest() -> moveFile($sZdjecie, $this -> sKatalogDocelowy,'/',$this -> sNazwa);
}
}

Symfony zwraca mi błąd :Call to undefined method sfWebRequest::hasFiles.
Co robię nie tak? Bo coś widzę że sporo zmian nastąpiło w frameworku wraz z wypuszczeniem nowszych wersjiMaciej "Merlin" C. edytował(a) ten post dnia 14.06.11 o godzinie 18:43
Radosław Zatoka

Radosław Zatoka CTO / Symfony 2
developer

Temat: Dziwny problem... przekazywanie wartości zmiennych i...

Obiekt sfWebRequest nie posiada metody hasFiles(), stąd cały problem ;)
Można to sobie sprawdzić tu:
http://www.symfony-project.org/api/1_4/sfWebRequest
(jeśli nie używasz autouzupełniania, to Twój jedyny ratunek,
ale polecam korzystać z IDE z autouzupełnianiem)
Metoda sfWebRequest::hasFiles() była w wersjach 1.0 i 1.1, potem zniknęła.

Zmiany między 1.2 i 1.4 nie są znaczne (z moich doświadczeń praktycznie każdy plugin czy snippet z neta pod 1.2 chodził mi pod 1.4), ale z wcześniejszymi wersjami bywa różnie.
Jeśli książka omawia wersje przed 1.2, lepiej chyba będzie odłożyć książkę i zrobić sobie nieśmiertelnego Jobeeta :)
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/

to tylko 23 lekcje, a na pewno wyjdziesz lekko poza podstawy, nie nauczysz się złych nawyków i nie będziesz musiał rozkmilać błędów autorów czy przedawnionego kodu...

Z polskich książek o sf niestety nie polecam żadnej. Najlepsza jest Symfony w przykładach, Gajda zrobił kawał dobrej roboty, ale to niestety Propel :(
Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Dziwny problem... przekazywanie wartości zmiennych i...

Jako IDE to wykorzystuję NetBeans 7 w sumie wygodnie się mi w tym pisze... może dlatego że jako jedyny przeze mnie przetestowany działa pod Windowsem (z którym się prawie rozstałem) i Linuxem.

Heh no właśnie w ksiażce niestety nie jest dokładnie napisane której wersji symfony opis dotyczy. Na płycie dołączyli wersje 1.1 i 1.2 ale na 1.2 też... wskazane błędy wyskakują. Więc nie wiem co myśleć.

A swoją drogą takie rozkminianie problemów to poniekąd dobra nauka, choć może nie na sam początek.

Co do literatury wskazanej przez Ciebie... muszę się z tym zaznajomić :)
Generalnie uwidziało mi się zrobić coś ambitnego w Symfony rezygnując z dostosowywania Joomli czy WordPressa do własnych celów.
Czasu pewnie poświęcę na to tyle samo ale znajomość "co w trawie piszczy" jak i satysfakcja o niebo większa ;)Maciej "Merlin" C. edytował(a) ten post dnia 14.06.11 o godzinie 19:57

Następna dyskusja:

[Symfony 1.0] dziwny proble...




Wyślij zaproszenie do