1

问题是复选框列表选择,它是一个多选。当我从控制器中删除以下邮件代码时,表格会通过电子邮件发送...'{serviceItem}' => $model->selection,

在模型中,以下爆炸和内爆用于将选择正确放入数据库表中......

public function afterFind()
{

    $this->selection=explode(',',$this->selection);

        return true;

}

/*implode your selection */
public function beforeSave()
{
    $this->selection=implode(',',$this->selection);
        return true;


}

如果在保存之前内爆...

[quote="php manual"] 返回一个字符串,其中包含按相同顺序表示的所有数组元素的字符串表示形式,每个元素之间带有粘合字符串。[/quote]

邮件程序$message = strtr从数组中返回一个字符串......

[quote="phpmanual"]strtr - 如果给定两个参数,第二个应该是数组形式的数组('from' => 'to', ...)。返回值是一个字符串,其中所有出现的数组键都已替换为相应的值...

$message = strtr ('Submitted on: {submissionDate}
Name: {firstName} {lastName}

Service Item: {serviceItem}

Visitor Comments: {message}', array(
'{submissionDate}' => $model->date,
'{firstName}' => $model->firstName,
'{lastName}' => $model->lastName,

'{serviceItem}' => $model->selection,

'{message}' => $model->comments));

Q. 为什么会出现错误?和...

Q. $model->selections 在电子邮件中发送的解决方案是什么?

4

1 回答 1

1

Q. 为什么会出现错误?

回答:

Firststrtr()期望数组是 formarray('stringFROM'=>'stringTO')而不是array('stringFROM'=>array(...))

您得到第二种格式(因此错误),因为$model->selection它是一个数组,因为您已经完成了explode()in afterFind()

afterFind()find每当您使用CActiveRecord 的任何方法(即find()findAll()findByPk()、等)加载模型时都会findByAttributes()调用它,如果我是正确的,您正在调用其中一种方法来获取当前模型。


Q. $model->selections 在电子邮件中发送的解决方案是什么?

回答:

在这种情况下,您可以简单地implode()再次执行以获取字符串:

'{serviceItem}' => implode(',',$model->selection);
于 2012-07-15T18:02:54.210 回答