Yii Framework Forum: Login Widget Su Template Personalizzato - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Login Widget Su Template Personalizzato Rate Topic: -----

#1 User is offline   Andrea.p 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 13-September 13

Posted 28 September 2013 - 06:11 AM

Buongiorno,

il mio obiettivo è realizzare un widget del classico "Login Form".

Premetto che sto utilizzando un template HTML appositamente modificato per YII.

Ho creato in "protected/components" LoginWidget.php:

<?php

Yii::import('zii.widgets.CPortlet');
 
class LoginWidget extends CPortlet
{
    protected function renderContent()
    {
        $this->render('loginWidget',array('model'=>new LoginForm));
    }
}

?>


ed in "protected/components/views" loginWidget.php:
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'login-form',
         'action'=>Yii::app()->createUrl('site/login'),
        'enableAjaxValidation'=>false,

)); ?>


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



		<?php echo $form->passwordField($model,'password'); ?>
		<?php echo $form->error($model,'password'); ?>

		<?php echo $form->checkBox($model,'rememberMe'); ?>
		<?php echo $form->label($model,'rememberMe'); ?>
		<?php echo $form->error($model,'rememberMe'); ?>

            <?php echo CHtml::button('Entra',
    array(
        'submit'=>array('site/login'),
        'confirm' => 'Are you sure?'
        // or you can use 'params'=>array('id'=>$id)
    )) ?>
		<?php echo CHtml::submitButton('Login'); ?>
	</div>

<?php $this->endWidget(); ?>
</div><!-- form -->


Per richiamare il widget in tutte le pagine nella main.php del mio template inserisco:
  <?php $this->widget('loginWidget');  ?>


Di fatti viene mostrato correttamente il form di Login in tutte le pagine, ma se provo ad autenticarmi non succede nulla, ed il mio url diventa da "index.php" a "?LoginForm%5Busername%5D=admin&LoginForm%5Bpassword%5D=admin&LoginForm%5BrememberMe%5D=0&yt1=Login#"

Mentre se mi loggo tramite "index.php?r=site/login" l'autenticazione avvine corretamente...

Dove sto sbagliando?

Grazie in anticipo
0

#2 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 28 September 2013 - 08:23 AM

leggiti per bene la parte delle guida di yii sull'autenticazione:
http://www.yiiframew.../it/topics.auth

non c'è bisogno di inserire il login su tutte le pagine,
devi solo filtrare gli accessi per ogni controller, sulle azioni che ti interessano
e automaticamente una volta contatta quella pagina verrai redirezionato sulla pagina di login.

Ci sono anche delle estensioni che ti aiutano in merito, ma sono consigliate per applicazioni di una certa entità. Guardati rights, e rbac in generale.
0

#3 User is offline   Andrea.p 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 13-September 13

Posted 28 September 2013 - 09:35 AM

Ciao st4nny,

Grazie come sempre per la tua risposta, purtroppo però mi sono spiegato male:
Vorrei inserire il form di login nel main.php del mio template; non per gestire i permessi o i ruoli, ma per dare la possibilità agli utenti di fare il login in qualsiasi parte del sito (index, contact etc...).
Semplicemente un form login funzionante da inserire nel main.php
0

#4 User is offline   Andrea.p 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 13-September 13

Posted 28 September 2013 - 05:17 PM

Ho provato anche questa soluzione (sostanzialmente quanto già avevo fatto) ma nulla da fare.

Possibile che ci sia una interferenza con il javascript del template??
0

#5 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 28 September 2013 - 08:12 PM

scusami ma non avevo capito bene quello che volevi fare.
ti confermo che il codice che hai postato fa quello che deve fare.

Ho creato una nuova webapp di test:
./yiic webapp /path/test


in components ho creato:
loginwidget.php
views/loginWidget.php


occhio a come chiami i file perchè a me dava errore quando dichiaravo nel main.php
<?php $this->widget('loginwidget');  ?>


tu invece avevi il file components/LoginWidget.php, linux è fiscalissimo.. ma magari sei su windows.
1

#6 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 29 September 2013 - 01:04 AM

Se posso dare dei consigli, in verità buone pratiche diffuse e non dettate da me, quando un file contiene il nome di una classe, è bene che il file contenga il nome della classe. LoginWidget dovrebbe essere il nome corretto.
Riguardo alla posizione delle nostre estensioni, dentro components ci andrebbero i componenti: questo è un widget e dovrebbe trovarsi dentro alla cartella extensions. Yii non è per nulla fiscale e qualche volta sembra bello poter mettere le cose dove vogliamo. Ma poi che cosa succede se condividiamo il nostro codice? Un po' di widget stanno in una cartella, altri in un'altra ancora. ... E così si finisce per rendere complicato il lavoro.
1

#7 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 29 September 2013 - 05:49 AM

si tutto vero, anche io ho storto il naso per quanto riguarda la posizione del widget, ma immagino che il nostro Andrea.p voleva solo far funzionare le cose, poi dopo con tutta calma avrebbe sistemato il codice :lol:

Anche per il nome del file, è sacrosanto rispettare le regole a cui fa riferimento sensorario

nel main va:
<?php $this->widget('LoginWidget');  ?>


l'orario di ieri notte, mi ha imposto di fare le cose alla svelta (nella maniera meno consona)
0

#8 User is offline   Andrea.p 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 13-September 13

Posted 29 September 2013 - 03:01 PM

View Postst4nny, on 28 September 2013 - 08:12 PM, said:

scusami ma non avevo capito bene quello che volevi fare.
ti confermo che il codice che hai postato fa quello che deve fare.

Ho creato una nuova webapp di test:
./yiic webapp /path/test


in components ho creato:
loginwidget.php
views/loginWidget.php


occhio a come chiami i file perchè a me dava errore quando dichiaravo nel main.php
<?php $this->widget('loginwidget');  ?>


tu invece avevi il file components/LoginWidget.php, linux è fiscalissimo.. ma magari sei su windows.


Nel Ringraziare tutti per il prezioso supporto sono felice di informarvi che ho individuato il problema:

un tag html "<form>" di troppo che includeva il "login-form" di yii e ne comprometteva il funzionamento.


View Postsensorario, on 29 September 2013 - 01:04 AM, said:

Se posso dare dei consigli, in verità buone pratiche diffuse e non dettate da me, quando un file contiene il nome di una classe, è bene che il file contenga il nome della classe. LoginWidget dovrebbe essere il nome corretto.
Riguardo alla posizione delle nostre estensioni, dentro components ci andrebbero i componenti: questo è un widget e dovrebbe trovarsi dentro alla cartella extensions. Yii non è per nulla fiscale e qualche volta sembra bello poter mettere le cose dove vogliamo. Ma poi che cosa succede se condividiamo il nostro codice? Un po' di widget stanno in una cartella, altri in un'altra ancora. ... E così si finisce per rendere complicato il lavoro.


Avresti per caso un link sul YII quality code? In questo modo evito di ripetere questi "errori" in futuro.

Grazie di nuovo a tutti
0

#9 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 01 October 2013 - 06:31 AM

Devi solo leggere la documentazione e leggere le regole del coding standard. Cercando a caso ho trovato questo: https://github.com/A...coding-standard
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users