Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]
Forum PHP.pl > Forum > PHP > Frameworki
Gribo
Mam taki problem otóż chę zrobić panel logowania wszystko niby działa OK, ale nie pokazuje mi formularza w partialu tylko pokazuje taki błąd :
Fatal error: Class 'LoginForm' not found in D:\Programy\WebServ\httpd\Symfony\apps\front\modules\login\templates\_login.php

Próbowałem inicjalizowac formularz bezpośrednio w partialu nic to nie dało, tak samo jak inicjalizowałem go w componencie. OTO kody:

tak wstawiam komponent do layaut.php
  1. <?php include_component('login', 'panel') ?>



  1. <?php
  2. [b]
  3. [/b]class loginComponents extends sfComponents
  4. {
  5.  public function executePanel()
  6.  {
  7.    if (!$this->getUser()->isAuthenticated()) {
  8.        //$this->form = new LoginForm();
  9.    } else {
  10.        $this->zalogowany='Jestem zalogowany!!';    
  11.    }
  12.  
  13.  }
  14. } [b]
  15. [/b]
  16. ?>


_panel.php
  1.  <?php if(!$sf_user->isAuthenticated()) : ?>
  2.    <?php include_partial('login/login') ; ?>
  3. <?php else: ?>
  4. <h2>Ustawienia konta:</h2>
  5. <?php echo $zalogowany; ?>
  6. <p><?php echo link_to('Edycja profilu','edit/dane'); ?></p>
  7. <p><?php echo link_to('Zmień hasło','edit/haslo'); ?> </p>
  8. <p><?php echo link_to('Wyloguj','login/wyloguj'); ?> </p>
  9. <?php endif; ?>
  10.  


_login.php
  1. <h2>Zaloguj się:</h2>
  2. <form method="post" action="<?php echo url_for('login/index'); ?>">    
  3. <?php echo $form ?>
  4. <input type="submit" name="zaloguj" class="zaloguj" value="zaloguj">
  5. </form>

Whisller
W jakim katalogu masz klase LoginForm.class.php? Zrobiłeś cc? No i kolejna kwestia jeśli chcesz coś użyć w partialu to musisz to do niego przekazać. Jako drugi parametr.
Gribo
Wiem akurat tu mi sie tak skopiowało ale formularz przekazuje jako 2 parametr. Formularz mam w login/lib/form/
dodam że jak chce np. jakiś propelowski formularz wczytać to wczytuje ale jak inny to nie znajduje klasy

cc robiłem wielokrotnie
Whisller
Coś namieszałeś. Napisz dokładnie jak nazywasz plik z klasą formularza, jak nazywasz klasę tego formularza, gdzie go trzymasz. Zapewne jest to jakaś literówka. Zobacz jeszcze raz dokładnie nazewnictwo.
Gribo
oto struktura katalogu:
login/
actions/
action.class.php
components.class.php
lib/
form/
LoginForm.class.php
templates/
_login.php
_panel.php
indexSuccess.php


Zawartośc plików:
components.class.php
  1. <?php
  2. class loginComponents extends sfComponents
  3. {
  4.  public function executePanel()
  5.  {
  6.    if (!$this->getUser()->isAuthenticated()) {
  7.        $this->form = new LoginForm();
  8.    } else {
  9.        $this->zalogowany='Jestem zalogowany!!';    
  10.    }
  11.  
  12.  }
  13. }
  14. ?>


LoginForm.class.php
  1. <?php
  2. class LoginForm extends sfForm
  3. {
  4.    public function configure() {
  5.        $this->setWidgets(array('login' => new sfWidgetFormInput(),
  6.                                'haslo' => new sfWidgetFormInputPassword()));
  7.    }
  8. }
  9. ?>


_login.php
  1. <h2>Zaloguj się:</h2>
  2. <form method="post" action="<?php echo url_for('login/index'); ?>">    
  3. <?php echo $form ?>
  4. <input type="submit" name="zaloguj" class="zaloguj" value="zaloguj">
  5. </form>


_panel.php
  1. <?php if(!$sf_user->isAuthenticated()) : ?>
  2.    <?php include_partial('login/login',array('form' => $form)) ; ?>
  3. <?php else: ?>
  4. <h2>Ustawienia konta:</h2>
  5. <?php echo $zalogowany; ?>
  6. <p><?php echo link_to('Edycja profilu','edit/dane'); ?></p>
  7. <p><?php echo link_to('Zmień hasło','edit/haslo'); ?> </p>
  8. <p><?php echo link_to('Wyloguj','login/wyloguj'); ?> </p>
  9. <?php endif; ?>


To nie może być literówka. zakażdym razem nie znajduje klasy :
Fatal error: Class 'LoginForm' not found in D:\Programy\WebServ\httpd\Symfony\apps\front\modules\login\actions\components.class.php on line 7

a jak tylko zmienie na jakis propelowski formularz np.
components.class.php
  1. <?php
  2. [/b]$this->form = new AktualnosciForm();
  3. [b]
  4. ?>


To wszytsko działa jak należy.
Pr0100
  1. <?php
  2. class LoginForm extends BaseFormPropel
  3. {
  4.   public function setup()
  5.   {
  6.      $this->setWidgets(array(
  7.         'login' => new sfWidgetFormInput(),
  8.         'haslo' => new sfWidgetFormInputPassword()
  9.      ));
  10.  
  11.     $this->widgetSchema->setNameFormat('login[%s]');
  12.     $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
  13.  
  14.     parent::setup();
  15.  }
  16.  
  17.  public function getModelName()
  18.  {
  19.    return 'User';
  20.  }
  21. }
  22. ?>


działa?
Gribo
To co podałeś nie działa
Ale zrobiłem tak :
Przekopiowałem całą klasę LoginForm.class.php do folderu lib głównej aplikacji (frontend) i teraz działa. Chyba popełniałem błąd bo ten komponent wykorzystywałem na Layout.php a on jakoś nie widzi klas które sa w poszczególnych modułach. No chyba że jest jakiś inny sposób żeby to zrobić. Czekam na solucje tongue.gif
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.