Components ¶
...folder /protected/components/UserLoginWidget.php... ...extending the CWidget class...
You have to extend the widget class and configure it for user login widget
class UserLoginWidget extends CWidget
{
public $title='User login';
public $visible=true;
public function init()
{
if($this->visible)
{
}
}
public function run()
{
if($this->visible)
{
$this->renderContent();
}
}
protected function renderContent()
{
$form=new User;
if(isset($_POST['User']))
{
$form->attributes=$_POST['User'];
if($form->validate() && $form->login()){
$url = $this->controller->createUrl('user/index');
$this->controller->redirect($url);
}
}
$this->render('UserLogin',array('form'=>$form));
}
}
...folder /protected/components/views/UserLogin.php...
Configuring the view of UserLoginWidget class
<?php if(Yii::app()->user->isGuest) : ?>
<?php
if($form->getErrors() != null) {
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'userloginwidget',
'cssFile'=>'jquery-ui-1.8.7.custom.css',
'theme'=>'redmond',
'themeUrl'=>Yii::app()->request->baseUrl.'/css/ui',
'options'=>array(
'title'=>'User Login Errors',
'autoOpen'=>true,
'modal'=>true,
'width'=>350,
),
));
}else{
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'userloginwidget',
'cssFile'=>'jquery-ui-1.8.7.custom.css',
'theme'=>'redmond',
'themeUrl'=>Yii::app()->request->baseUrl.'/css/ui',
'options'=>array(
'title'=>'User Login',
'autoOpen'=>false,
'modal'=>true,
'width'=>300,
),
));
}
?>
<?php echo CHtml::beginForm(Yii::app()->homeUrl); ?>
<?php echo CHtml::activeLabel($form,'username'); ?>
<?php echo CHtml::activeTextField($form,'username') ?>
<?php echo CHtml::activeLabel($form,'password'); ?>
<?php echo CHtml::activePasswordField($form,'password') ?>
<?php echo CHtml::activeCheckBox($form,'rememberMe'); ?>
<?php echo CHtml::activeLabel($form,'rememberMe'); ?>
<?php echo CHtml::submitButton('Submit'); ?>
<?php echo CHtml::error($form,'password'); ?>
<?php echo CHtml::error($form,'username'); ?>
<?php echo CHtml::endForm(); ?>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>
<?php endif; ?>
Layout Config ¶
Calling the widget
<?php
$this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'User Llogin', 'url'=>'#','linkOptions'=>array( 'onclick'=>'$("#userloginwidget").dialog("open"); return false;'), 'visible'=>Yii::app()->user->isGuest),
),
));
$this->widget('UserLoginWidget',array('visible'=>Yii::app()->user->isGuest));
?>
open and focus and username textfield
Hi,
I like this wiki, just wondering how could I make the username textfield is focused when the dialog is open?
cheers,
@adinugro re: Focus
<?php $form=$this->beginWidget('CActiveForm', array( 'focus'=>($model->hasErrors()) ? '.error:first' : array($form, 'username'), )); ?>
Show dialog box permanently when user is not logged in
Thanks for wonderful wiki.
I want to keep displaying this from and keep inactive all background view when user is not logged in.
Please tell me how can i achieve this with this widget.
Thanks in advance.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.