widget form login

[right]

سلام

میخوام فرم

login

همیشه به کابر نشان داده شود وقتی که وارد شد هم دیگه نمایش نده

برای اینکار یه فرم ورود با ویجت ساختم ولی برای بررسی صحت داده مشکل دارم

از خیر اجکسم گذشتیم

مشکل کجاست چرا عمل نمیکنه

?

[/right]

main.php برای صدا زدن که توی




 $formlogin= new LoginForm;                              

  $this->widget('LoginFormWidget', array( 'form' => $formlogin )); 




 class LoginFormWidget extends CWidget

{

    public $form;

    public function run()

    {      if (! $this->form instanceof CFormModel) {

           throw new RuntimeException('form available.');

        }

        $this->render('FormWidget', array('fform'=>$this->form));

    }

}






<div class="form">

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

	'id'=>'login-form',

	'enableClientValidation'=>true,

	'clientOptions'=>array(

		'validateOnSubmit'=>true,

	),

)); ?>




		<?php echo $form->textField($fform,'username'); ?>

		<?php echo $form->error($fform,'username'); ?>

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

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

		<?php echo  CHtml::link('ورود' ,array('site/login'));

 ?>

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

</div><!-- form -->






public function actionLogin()

	{

		$model=new LoginForm;

		if(isset($_POST['LoginForm']))

		{

			$model->attributes=$_POST['LoginForm'];

			if($model->validate() && $model->login())

                            $this->redirect(Yii::app()->user->returnUrl);

		}

                                else {                

                               Yii::app()->user->setFlash('login','اطلاعات وارد شده نادرست میباشد لطفا دقت کنید');

	                $this->actionIndex ();

                                }

                }




سلام دوست عزیز برای استفاده از ویجتت :




<?php $this->widget('yourWidgetAddress.loginForm',array('form'=>$form)); ?>



bejaye "yourWidgetAddress" address widget khodet ro bezar mese :

aplication.widgets.loginform

va inke baraye estfade az widget ba body:


class MyWidget extends CWidget

{

    public function init()

    {

        // this method is called by CController::beginWidget()

    }


    public function run()

    {

        // this method is called by CController::endWidget()

    }

}

va dar akhar man feck mikonam inke az "CActieForm" estefade kardi eshtebahe




<?php $this->beginWidget('yourWidgetAddress.loginForm'); ?>

...body content that may be captured by the widget...

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



دقیق نفهمیدم میخوای چیکار کنی وای به نظرم میخواسی داخل ویجت خودت ویجت

CActiveForm

رو رندر کنی که اگه بخوای این کارو بکنی نمیتونی از این استفاده کنی :




$this->widget(...



چون که الان تو کلاس کنترلر نیسی بجاش فک کنم بتونی :




$controller=new Controller;

$controller->widget(..



ممنون