Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]czy robił ktoś własny formularz logowania ?Solved], SOLVED
nieraczek
post
Post #1





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

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


W Symfony po zainstalowaniu wtyczki sfGuardAuth standardowy formularz logowania wygląda tak:
http://img514.imageshack.us/my.php?image=beztytuut.jpg

A ja chciałbym go zmienić - polskie napisy itp. oraz przy okazji po zalogowaniu zrobić przekierowanie na daną stronę, bo aktualnie dziwnie to u mnie działa.

Szczątkowy opis jak to zrobić znalazłem tutaj: http://www.symfony-project.org/plugins/sfG...b=plugin_readme

I mam narazie:
action.class.php:
  1. <?php
  2.  
  3. require_once(sfConfig::get('sf_plugins_dir').'sfDoctrineGuardPluginmodulessfGuardAuthlibBasesfGuardAuthActions.class.php');
  4.  
  5.  
  6. class sfGuardAuthActions extends BasesfGuardAuthActions
  7. {
  8.  
  9.  public function executeSignin(sfWebRequest $request)
  10.  {
  11.          $this->form = new LogowanieForm();
  12.        
  13.        if ($request->isMethod('post'))
  14.        {
  15.              $this->form->bind($request->getParameter('logowanie'));
  16.              if ($this->form->isValid())
  17.              {
  18.                
  19.                
  20.                
  21.                
  22.                $this->redirect('stronka/tajne');
  23.            
  24.            }
  25.        }      
  26.  }  
  27.  
  28. }
  29. ?>



signinSuccess.php:
  1. <form action="<?php echo url_for('@sf_guard_signin') ?>" method="POST">
  2.  <table>
  3.    <?php echo $form ?>
  4.    <tr>
  5.      <td colspan="2">
  6.        <input type="submit" value="Zaloguj"/>
  7.      </td>
  8.    </tr>
  9.  </table>
  10. </form>


LogowanieForm.class.php:
  1. <?php
  2.  
  3.  
  4. class LogowanieForm extends sfForm
  5. {
  6.  public function configure()
  7.  {
  8.    $this->setWidgets(array(
  9.      'login'    => new sfWidgetFormInput(),
  10.      'haslo'   => new sfWidgetFormInput(),
  11.    ));    
  12.  
  13.    $this->widgetSchema->setLabels(array(
  14.      'login'    => 'Twój login',
  15.      'haslo'   => 'Twoje hasło',
  16.    ));    
  17.  
  18.    
  19.  
  20.    $this->setValidators(array(
  21.      'login'   => new sfValidatorString(array(), array('required' => 'Nie wpisano loginu.')),
  22.      'haslo' => new sfValidatorString(array(), array('required' => 'Nie wpisano hasła.')),
  23.    ));
  24.  
  25.     $this->validatorSchema->setPostValidator(new sfGuardValidatorUser(array(), array('invalid' => 'Login lub hasło są niepoprawne')));
  26.     $this->widgetSchema->setNameFormat('logowanie[%s]');
  27.  
  28.  }
  29. }
  30. ?>



Narazie chyba ok jest wszystko ? W jaki sposób mam w symfony zweryfikować czy login i hasło są poprawne jak te w bazie danych ?

Ten post edytował nieraczek 2.03.2009, 18:07:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nieraczek
post
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

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


No ja w gruncie rzeczy też nie wiem, dobrze, że mnie uświadomiłeś. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Więc zgodnie z Twoją radą zmodyfikowałem pliki (swoją drogą za dużo narobili tych katalogów - wystarczy spojrzeć na długość poniższy ścieżek dostępu do plików):
C:\Program Files\WebServ\httpd\sf_sandbox\plugins\sfDoctrineGuardPlugin\modules\sfGuardAuth\templates\signinSuccess.php:
  1. <?php use_helper('I18N') ?>
  2.  
  3. <form action="<?php echo url_for('@sf_guard_signin') ?>" method="post">
  4.  <table>
  5.    <?php echo $form ?>
  6.  </table>
  7.  
  8.  <input type="submit" value="<?php echo __('Zaloguj') ?>" />
  9.  <a href="<?php echo url_for('@sf_guard_password') ?>"></a>
  10. </form>


oraz C:\Program Files\WebServ\httpd\sf_sandbox\plugins\sfDoctrineGuardPlugin\lib\form\doctrine\sfGuardFormSignin.class:
  1. <?php
  2.  
  3. /**
  4.  * sfGuardFormSignin for sfGuardAuth signin action
  5.  *
  6.  * @package form
  7.  * @package sf_guard_user
  8.  */
  9. class sfGuardFormSignin extends BasesfGuardFormSignin
  10. {
  11. public function configure()
  12.  {
  13.    $this->setWidgets(array(
  14.      'username'    => new sfWidgetFormInput(),
  15.      'password'   => new sfWidgetFormInput(array('type' => 'password')),
  16.      'remember' => new sfWidgetFormInputCheckbox(),
  17.    ));    
  18.  
  19.  
  20.    $this->widgetSchema->setLabels(array(
  21.      'username'    => 'Twój login',
  22.      'password'   => 'Twoje hasło',
  23.    'remember'   => 'Pamiętać',
  24.    ));    
  25.  
  26.    
  27.  
  28.    $this->setValidators(array(
  29.      'username'   => new sfValidatorString(array(), array('required' => 'Nie wpisano loginu.')),
  30.      'password' => new sfValidatorString(array(), array('required' => 'Nie wpisano hasła.')),
  31.      'remember' => new sfValidatorBoolean(),
  32.    ));
  33.        
  34.  
  35.    $this->validatorSchema->setPostValidator(new sfGuardValidatorUser(array(), array('invalid' => 'Login lub hasło są niepoprawne')));
  36.    
  37.    $this->widgetSchema->setNameFormat('signin[%s]');
  38.  
  39.  }
  40.  
  41.  
  42. }
  43. ?>


Dobrze to zrobiłem, bo mi działa, ale to że mi działa to nie znaczy, że dobrze ? Metoda public function configure() jest także w klasie BasesfGuardFormSignin i definiuje formularz w języku angielskim więc jak rozumiem te metody są wirtualne tak jak np. w języku java i pisząc metodę w klasie pochodnej sfGuardFormSignin przykryłem tę z klasy podstawowej tak jak w c++ czy java ? Żeby potem nie było problemów.....

I jak rozumiem przy dodawaniu nowych tabel w bazie danych powyższe pliki nie zostaną nadpisane ? Tylko te z przedrostkiem 'Base' ewentualnie zostaną nadpisane ?

Ten post edytował nieraczek 1.03.2009, 14:34:53
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 10:17