2013-09-20 5 views
1

я с помощью следующей формыФатальная ошибка: Вызов функции-члена isAttributeRequired()

<?php $form = $this->beginWidget('CActiveForm', array(
    'id'=>'change-password', 
    'enableAjaxValidation'=>true, 
    'enableClientValidation'=>true, 
    'focus'=>array($model,'old-password') 
    )); 
?> 
<div class="row"> 
    <?php echo $form->labelEx($model,'oldPassword'); ?> 
    <?php echo $form->passwordField($model,'oldPassword'); ?> 
    <?php echo $form->error($model,'oldPassword'); ?> 
</div> 
<div class="row"> 
<?php echo CHtml::submitButton('Submit'); 
?> 
</div> 
<?php $this->endWidget(); ?> 

Вышеуказанная форма выдает ошибку как

Fatal error: Call to a member function isAttributeRequired() on a non-object in /framework/web/helpers/CHtml.php on line 1414 

Я новичок вы юй рамки так я не в состоянии угадать, где ошибка. может кто-нибудь помочь

Edit 1

public static function activeLabelEx($model,$attribute,$htmlOptions=array()) 
    { 
     $realAttribute=$attribute; 
     self::resolveName($model,$attribute); // strip off square brackets if any 
     $htmlOptions['required']=$model->isAttributeRequired($attribute); 
     return self::activeLabel($model,$realAttribute,$htmlOptions); 
    } 

Edit-2

Если удалить <?php echo $form->labelEx($model,'oldPassword'); ?> подводит ошибка в

Fatal error: Call to a member function getValidators() on a non-object in CHtml.php on line 2236 
+0

Что является линия 1414? – Paddyd

+0

Вы не предоставили соответствующий код (где isAttributeRequired вызывается). Однако (и это может быть не удивительно, если вы можете читать по-английски), проблема в том, что вы вызываете этот метод на объект, который по какой-то причине не был инициализирован, поэтому здесь вам нужно посмотреть. –

+0

проверить мое редактирование 1 для строки '1414' – overflow

ответ

0

переменных $ модель не содержит модель объект, проверьте, передаете ли вы правильный объект в функции рендеринга.

бывшие для создания страницы:

/* in the controller class */ 
public function actionCreate() { 
    $model=new YourModel; 
    $this->performAjaxValidation($model); 

    if(isset($_POST['YourModel'])) 
    { 
     $model->attributes=$_POST['YourModel']; 
     if($model->save()) 
      $this->redirect(array('view','id'=>$model->id)); 
    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 
/* in the create.php view */ 
.... 
echo $this->renderPartial('_form', array('model'=>$model)); 
.... 
0

В контроллере, когда вы предоставляете ваше мнение Проверьте определение модели $model=new Model name; и проверить вашу модель имеет те же атрибуты (переменные)

другая ошибка

в контроллере при визуализации на ваш вид Возможно, что функция принимает определенные параметры, и вы га Ве не дал ему

, например $id в следующей функции

public function actionUpdateTeams($id) { 

} 
Смежные вопросы