你好我在yii中有一个html表单我希望控制器中的操作返回到表单并显示错误消息,因为我不知道如何显示表单显示错误有我的代码:< / p>
CONTROLLER
class ProfileController extends Controller {
public function actionSave() {
$patients = new Patients;
$questions = new PatientsRegistrationQuestions;
$payments = new PaymentTypes;
$gender = new Gender;
if (isset($_POST['Patients'])) {
$patients->save_personal_data();
$patients->name = $_POST['Patients']['name'];
$patients->mobile = $_POST['Patients']['mobile'];
$patients->email = $_POST['Patients']['email'];
$patients->dob = $_POST['Patients']['dob'];
$patients->weight = $_POST['Patients']['weight'];
$patients->gender_id = $_POST['Patients']['gender_id'];
$patients->height = $_POST['Patients']['height'];
//$patients->payment_type_id = $_POST['Patients']['payment_type_id'];
$patients->activation_date = '0000-00-00';
$patients->credit = 0;
$patients->archive = 0;
$patients->balance = 0;
$patients->first_login = 0;
$patients->guide_status = 0;
$patients->passcode = '';
$patients->patient_id = $questions->patient_id;
// $patients->gender_id = $gender->gender_id;
if ($patients->validate()) {
$patients->save(false);
} else {
$this->redirect(Yii::app()->request->urlReferrer);
}
}
}
观点
<form id="register-form" method="post" action=" <?php echo Yii::app()->getBaseUrl(true) . '/profile/save' ?>">
<div class="form-group" id="errors">
</div>
<!--the first form-->
<div id="register-form1">
<fieldset id="step1">
<div class="form-group">
<input size="60" maxlength="200" placeholder="<?php echo Yii::t('translation', 'First Name') ?>" class="form-control valid" name="Patients[firstname]" id="Patients_name" type="text">
</div>
<div class="form-group">
<input size="60" maxlength="200" placeholder="<?php echo Yii::t('translation', 'Last Name') ?>" class="form-control valid" name="Patients[lastname]" id="Patients_name" type="text">
</div>
<div class="form-group">
<input size="60" maxlength="255" placeholder="<?php echo Yii::t('translation', 'Mobile') ?>" class="form-control valid" name="Patients[mobile]" id="Patients_mobile" type="text">
</div>
<div class="form-group">
<input size="60" maxlength="250" placeholder="<?php echo Yii::t('translation', 'Email') ?>" class="form-control valid" name="Patients[email]" id="Patients_email" type="text">
</div>
<div class="form-group">
<input size="60" maxlength="255" placeholder="<?php echo Yii::t('translation', 'Password') ?>"class="form-control valid" name="Patients[password]" id="Patients_password" type="password">
</div>
<div class="form-group">
<input size="60" maxlength="255" placeholder="<?php echo Yii::t('translation', 'Confirm Password') ?>"class="form-control valid" name="Patients[repeatpassword]" id="Patients_repeatpassword" type="password">
</div>
<div class="form-group">
<input type="checkbox" name="agree" aria-required="true" class="valid" aria-invalid="false">I agree to <a href="#" data-toggle="modal" data-target="#paymentTermsModal">Terms and conditions</a>
<div class="errorAgree"><label id="agree-error" class="error" for="agree" style="display: none;"></label></div>
</div>
<div class="form-group">
<button class="btn btn-gate pull-right"> <?php echo CHtml::link(Yii::t('translation', 'Cancel'), Yii::app()->createUrl('/site/index')); ?></button>
<a class="btn btn-gate pull-right" id="next" href="#register-form2">Next</a>
</div>
</fieldset>
</div>
</form>
答案 0 :(得分:0)
基于某些模型保存记录的机制是这样的:
public function actionSave()
{
$model = new ModelName;
// ...
if(isset($_POST['ModelName']))
{
$model->attributes = $_POST['ModelName'];
if($model->validate())
{
$model->save(false);
$this->redirect(...); //redirect to some page after successful save
}
}
$this->render('viewName', array(
'model'=>$model // <-- passing variable to view, so that you can show error messages and data in form
));
}
现在,在视图文件中,检查模型是否有错误:
<?php if($model->hasErrors()): ?>
// show what is stored in $model->getErrors() and show it using foreach loop for example
<?php endif; ?>
顺便说一下,建议使用CHtml
类来呈现表单元素而不是手动编写,或者更好的方法 - 使用CActiveForm
。更多信息,例如:http://www.larryullman.com/2011/01/20/creating-forms-with-the-yii-framework/
答案 1 :(得分:0)
我不需要在我的控制器中创建一个chtml表单
?php echo $ form-&gt; errorSummary($ model); ?&GT;