تالار گفتمان nCIS.ir

نسخه‌ی کامل: ارور login (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
دوستان از وقتی این کد رو اضافه کردم صفحه ای اصلی ارور میده.
<div class="row" >
<div class="row" id="tophead" >
<?php if(Yii::app()->user->isGuest) : ?>
<a href="#signup" data-toggle="modal" data-target=".bs-modal-sm">ورود</a>
<a href="<?php echo Yii::app()->createUrl('site/register'); ?>">ثبت نام</a>
<?php else: ?>
خوش آمدین:
<strong><?php echo CHtml::encode(Yii::app()->user->name); ?></strong>
<a href="<?php echo Yii::app()->createUrl('site/logout'); ?>" style="margin-right:15px;">خروج</a>
<?php endif; ?><!-------popup------->

<div class="modal fade bs-modal-sm" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
 <div class="modal-dialog modal-sm">
   <div class="modal-content">
       <br>
<?php $form=$this->beginWidget('CActiveForm', array(
   'enableClientValidation'=>true,
   'focus'=>array($model,'username'),
   'htmlOptions'=>array(
       'class'=>'form-horizontal alert alert-success',
   ),
)); ?>
<div class="form"  style="background-color:#999;">
<div class="col-md-4">
       <?php echo $form->label($model,'username'); ?>
       <?php echo $form->textField($model,'username'); ?>
       <?php echo $form->error($model,'username'); ?>
</div>
 
</div>
   <div class="row">
   <div class="col-md-4">
       <?php echo $form->label($model,'password'); ?>
       <?php echo $form->textField($model,'password'); ?>
       <?php echo $form->error($model,'password'); ?>
</div></div> 
<div class="form-group">
   <div class="col-sm-5 col-sm-offset-3">
       <?php echo CHtml::submitButton(' ورود',array('class'=>'btn btn-success btn-lg btn-block')); ?>
   </div>

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

       </div>
</div>
</div>

و ارورش اینه
Undefined variable: model 
C:\wamp\www\kalayeroz\protected\views\layouts\main.php(42)
30 <?php else: ?>
31 خوش آمدین:
32 <strong><?php echo CHtml::encode(Yii::app()->user->name); ?></strong>
33 <a href="<?php echo Yii::app()->createUrl('site/logout'); ?>" style="margin-right:15px;">خروج</a>
34 <?php endif; ?><!-------popup------->
35 
36 <div class="modal fade bs-modal-sm" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
37   <div class="modal-dialog modal-sm">
38     <div class="modal-content">
39         <br>
40 <?php $form=$this->beginWidget('CActiveForm', array(
41     'enableClientValidation'=>true,
42     'focus'=>array($model,'username'),
43     'htmlOptions'=>array(
44         'class'=>'form-horizontal alert alert-success',
45     ),
46 )); ?>
47 <div class="form"  style="background-color:#999;">
48  <div class="col-md-4">
49         <?php echo $form->label($model,'username'); ?>
50         <?php echo $form->textField($model,'username'); ?>
51         <?php echo $form->error($model,'username'); ?>
52 </div>
53   
54 </div>

خط 42 رو ارور میده و باز مدل رو نمی شناسه.
چی کار باید انجام یدم؟
ممنون از راهنماییتون
از کنترلر موقع رندر، مدل رو برای ویو فرستادین؟
(02-04-1394، 07:33 ب.ظ)ADMIN نوشته: [ -> ]از کنترلر موقع رندر، مدل رو برای ویو فرستادین؟

استاد این کد کنترلر هست .
    public function actionLogin()
    {
        $model=new LoginForm;

        // if it is ajax validation request
        if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
        {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }

        // collect user input data
        if(isset($_POST['LoginForm']))
        {
            $model->attributes=$_POST['LoginForm'];
            // validate user input and redirect to the previous page if valid
            if($model->validate() && $model->login())
                $this->redirect(Yii::app()->user->returnUrl);
        }
        // display the login form
        $this->render('login',array('model'=>$model));
    }


امابه شکل زیر هم نوشتم درست نشد؟

public function actionLogin()
    {
        $model=new LoginForm;

        // if it is ajax validation request
        if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
        {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }

        // collect user input data
        if(isset($_POST['LoginForm']))
        {
            $model->attributes=$_POST['LoginForm'];
            // validate user input and redirect to the previous page if valid
            if($model->validate() && $model->login())
                $this->redirect(Yii::app()->user->returnUrl);
        }
        // display the login form
        $this->render('login');
    }
شما توی Layout به مقادیری که برای ویو میفرستین دسترسی ندارین.
(02-04-1394، 08:03 ب.ظ)ADMIN نوشته: [ -> ]شما توی Layout به مقادیری که برای ویو میفرستین دسترسی ندارین.

باید چی کار انجام بدم استاد؟
کنترلر رو به همون شکل اول در بیارم؟
تو layout مقادیر رو چه جوری به دست بیارم؟
 کوئری باید بگیرم؟
دو تا راه دارین:

1- میتونید از فیلدهای کنترلر استفاده کنید. مثال:
توی اکشن کنترلر
$this->loginModel = new LoginForm;
و توی layout با this->loginModel$ کار کنید.

2- با کلیپها کار کنید:
توی اکشن کنترلر یا ویو:
$this->beginClip('login');
// create login form here
$this->endClip();
و توی Layout اینطوری نمایش بدین:
if(isset($this->clips['login']) {
    echo $this->renderClip('login');
}
سلام وقتتون بخیر استاد.
من login رو تو یه پنجره با بوت استرامپ نوشتم  به صفحه دیگه ای از php  نمیره.
و وقتی روش اول رو امتحان کردم ارور قبل رو می داد  و تو روش دوم اصلا فرم رو نشون نمیداد.
به نظرتون اشتباه من تو کد هست یا استفاده نا به جا چون تو روش دوم مرحله اول رو فکر می کنم درست انجام دادم به نظرم تو نشون دادنش تو layout اشتباه کردم.
این کدش هست هر دو تو layout هست
<div class="row" id="tophead" >
<?php if(Yii::app()->user->isGuest) : ?>
<a href="#signup" data-toggle="modal" data-target=".bs-modal-sm">ورود</a>
<a href="<?php echo Yii::app()->createUrl('site/register'); ?>">ثبت نام</a>
<?php else: ?>
خوش آمدین:
<strong><?php echo CHtml::encode(Yii::app()->user->name); ?></strong>
<a href="<?php echo Yii::app()->createUrl('site/logout'); ?>" style="margin-right:15px;">خروج</a>
<?php endif; ?><!-------popup------->

<div class="modal fade bs-modal-sm" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-sm">
    <div class="modal-content">
        <br> 
<?php 
if(isset($this->clips['login'])) {
    
 $this->beginClip('login');
 ?>
<div class="form"  style="background-color:#999;">
 <div class="col-md-4">
       <span> نام کاربری </span>
        <?php echo $form->textField($model,'username'); ?>
        <?php echo $form->error($model,'username'); ?>
          </div>
            </div>
    <div class="row">
    <div class="col-md-4">
        <?php echo $form->label($model,'password'); ?>
        <?php echo $form->textField($model,'password'); ?>
        <?php echo $form->error($model,'password'); ?>
          </div> 
            </div> 
<div class="form-group">
    <div class="col-sm-5 col-sm-offset-3">
        <?php echo CHtml::submitButton(' ورود',array('class'=>'btn btn-success btn-lg btn-block')); ?>
    </div>
 <?php $this->endClip();
?>
 <?php } ?>

</div><!-- form -->
</div>
از روش اول استفاده کنید و بجای model$ از this->loginModel$ توی Layout استفاده کنید.
ممنونم استاد .درست شد.