Problem z logowaniem do strony

Witam.

Jestem świeżym użytkownikiem Yii. Jest to mój pierwszy framework więc proszę o wyrozumiałość.

Mam otóż taki problem, że nie bardzo wiem jak wywołać funkcję logowania z kontrolera strony.

Wiem, że normalnie odbywa się to za pomocą akcji z tym, że ja umieściłem okna logowania w layouts/main.php gdyż chcę aby te okna były widoczne podczas przeglądania serwisu.

Użyłem modelu LoginForm.php zawartego w aplikacji demonstracyjnej.

Fragment kodu okien logowania z pliku layoutu main.php:




<?php if (Yii::app()->user->isGuest){ 

 $model=new LoginForm;

	$form=$this->beginWidget('CActiveForm', array(

		'id'=>'login-form',

		'enableAjaxValidation'=>true,

	));?> 


<div id="login"><?php echo $form->label($model,'Login');?></div>

<div id="logback1"><?php echo $form->textField($model,'username'); ?><?php echo $form->error($model,'username'); ?></div>

<div id="haslo"><?php echo $form->labelEx($model,'Haslo'); ?></div>

<div id="logback2"><?php echo $form->passwordField($model,'password'); ?></div>

<button type="submit"><img style="float: left;" src="<?php echo Yii::app()->request->baseUrl;?>/images/rp_nowa/save.png">Zaloguj</button>

<?php $this->endWidget(); ?>

<?php } ?>

W pliku modelu LoginForm.php nic nie zmieniałem.

Zastanawiam się dokładnie jak wywołać funkcję logowania z kontrolera bez wykonywania "akcji" przechodzacej na konkretna podstronę.

Próbowałem przenieść funkcje logowania do akcji index ale wtedy działa tylko kiedy jest się na stronie głównej.

Dodatkowo występuje taki błąd, że przy wpisaniu poprawnych danych i wciśnięciu "enter" okna logowania nie znikają. Dzieje się to dopiero po odświerzeniu strony. Natomiast po wciśnięciu przycisku "Zaloguj" wszystko jest ok.

Proszę o pomoc.

Z góry dziękuję i pozdrawiam.

Musisz wskazać url do którego będą przekazane dane z formularza. Trzeba ustawić pole action w CActiveForm

np.




 'action' => array('user/login'),



W kontrolerze po prawidłowym logowaniu robisz przekierowanie do odpowiedniej strony.

Dzieki. Odpalilem logowanie. Ale teraz mam problem z tym ze jak zostawie puste pola i dam zaloguj to przenosi na pusta strone :confused:

Pewnie nie renderujesz treści w kontrolerze gdy będziesz miał puste pola (ewentualnie gdy pojawia się błąd).