gpt4 book ai didi

php - 使用 Yii 验证字段

转载 作者:行者123 更新时间:2023-11-29 05:26:09 24 4
gpt4 key购买 nike

我有两个相关模型,即 Candidate 和 Qualifications。他们之间是一对多的关系。我正在使用 CActiveForm 并使用事务来插入相关数据。从下面的代码中可以看出,候选人的 PK 是自动生成的,并作为 FK 发送到资格模型。
Controller

public function actionCreate()
{
$model=new Candidate;
$q=new Qualification;
if(isset($_POST['Candidate'], $_POST['Qualification'])){
$model->attributes=$_POST['Candidate'];
$q->attributes=$_POST['Qualification'];

if ($model->validate()) {
$transaction = Yii::app()->db->beginTransaction();
$success = $model->save(false);
$q->candidate_id = $model->id;
$success = $success ? $q->save() : $success;

if ($success){
$transaction->commit();
}
else{
$transaction->rollBack();
}

$this->redirect(array('view','id'=>$model->id));
}


}

我可以插入数据,但无法处理资格验证。通过使用上面的代码,如果我留下了资格模型的必填字段,它会产生一个错误(我不想要)。我希望资格验证应该在提交之前触发。它应该像候选人一样突出显示错误。_form

<div class="row">
<?php echo $form->labelEx($model,'father_name'); ?>
<?php echo $form->textArea($model,'father_name',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($model,'father_name'); ?>
</div>
........

<div class="row">
<?php echo $form->labelEx($qualification,'name'); ?>
<?php echo $form->textField($qualification,'name'); ?>
<?php echo $form->error($qualification,'name'); ?>
</div>

最佳答案

您已有的更好的方法:

public function actionCreate()
{
$candidate=new Candidate();
$qualification=new Qualification();

if (isset($_POST['Candidate'], $_POST['Qualification'])) {
$candidate->attributes=$_POST['Candidate'];
$qualification->attributes=$_POST['Qualification'];

$error = false;
$transaction = Yii::app()->db->beginTransaction();
try {
if (!$candidate->save()) {
throw new CException(CHtml::errorSummary($candidate));
}
$qualification->candidate_id = $candidate->id;
if (!$qualification->save()) {
throw new CException(CHtml::errorSummary($qualification));
}
$transaction->commit();
} catch (Exception $e) {
$transaction->rollBack();
$error = $e->getMessage();
}

if (!$error) {
$this->redirect(array('view','id'=>$candidate->id));
}

echo $error;
}
}

关于php - 使用 Yii 验证字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com