رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارور login (حل شد)
#1
سلام
دوستان از وقتی این کد رو اضافه کردم صفحه ای اصلی ارور میده.
<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 رو ارور میده و باز مدل رو نمی شناسه.
چی کار باید انجام یدم؟
ممنون از راهنماییتون
پاسخ
تشکر شده توسط:
#2
از کنترلر موقع رندر، مدل رو برای ویو فرستادین؟
پاسخ
تشکر شده توسط:
#3
(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');
    }
پاسخ
تشکر شده توسط:
#4
شما توی Layout به مقادیری که برای ویو میفرستین دسترسی ندارین.
پاسخ
تشکر شده توسط:
#5
(02-04-1394، 08:03 ب.ظ)ADMIN نوشته: شما توی Layout به مقادیری که برای ویو میفرستین دسترسی ندارین.

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

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');
}
پاسخ
تشکر شده توسط:
#7
سلام وقتتون بخیر استاد.
من 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>
پاسخ
تشکر شده توسط:
#8
از روش اول استفاده کنید و بجای model$ از this->loginModel$ توی Layout استفاده کنید.
پاسخ
تشکر شده توسط:
#9
ممنونم استاد .درست شد.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 4 مهمان