我使用方法redirect()获取以下异常
时,无法将数组作为参数Bad request(404):
Invalid data for parameter "Mailadresses"
var_dump
上的 $Mailadresses
显示了这一点:
array(2) {
[0] => string(22) "goetz.bewerber@gmx.net"
[1] => string(25) "zetkin.bewerber@gmail.com"
}
这取决于用户的选择,数组中有多少个元素,所以我无法将额外的项目作为参数放在数组中
任何想法,如何将数组作为参数赋予Controller中的actionMethod? 这是代码:
return $this->redirect(['/mail/mail-ausgang/stapelmail',
'IdPerson' => $id_person,
'Mailadresses' => $Mailadresses]);
P.S。:如果我的意图不能用redirect()
来实现,应该使用哪种方法?请注意,actionMethod位于另一个类
改述问题:
我想实现从类MailAusgangController发送电子邮件。邮件地址位于数据库中,将通过CheckboxColumns由用户选择从类BewerberController
收集。 CheckboxColumns将分别给我id Mailadresses。班级MailAusgangController
对此没有任何了解,这就是我必须将此信息作为数组提供的原因
这是重定向类
的代码 public function actionCollectMailAdresses() {
$session = new Session();
$Mailadresses = array();
$x = 0;
try {
$checkbox = (array) Yii::$app->request->post('selection');
if (empty(($checkbox)) && (isset($_POST['button_checkBoxes']))) {
$session->addFlash("warning", "Selektieren Sie die Bewerber, für die Mails erstellt werden sollen, über die Checkboxen");
return $this->redirect(['/bewerber/bewerber/index']);
}
/* checkBox enthält die Id */
foreach ($checkbox as $item) {
$id_person = Bewerber::findOne(['id' => $item])->id_person;
$IdEKontakt = EKontakt::findOne(['id_person' => $id_person])->id;
$mailAdress = KontaktMail::findOne(['id_e_kontakt' => $IdEKontakt]);
if (empty($mailAdress)) {
$session->addFlash("warning", "Für mindestens einer der Bewerber ist im System keine Mailadresse hinterlegt.<br>Überprüfen Sie bitte die Tabellenspalte Bewerber/Kandidat auf Mailadressen");
return $this->redirect(['/bewerber/bewerber/index']);
} else {
$mailAdress = KontaktMail::findOne(['id_e_kontakt' => $IdEKontakt])->mail;
$Mailadresses[$x] = $mailAdress;
$x++;
}
}
return $this->redirect(['/mail/mail-ausgang/stapelmail', 'Mailadresses' => $Mailadresses]);
} catch (\Exception $error) {
$go_back = "/bewerber/bewerber/index";
error_handling::error_without_id($error, $go_back);
}
}
答案 0 :(得分:0)
由我自己得到:
由于无法使用方法redirect()
提供复杂的数据类型,因此我决定使用SESSION来获取类MailausgangController
中的数组。
这是代码(在BewerberController
:)
$sessionPHP = Yii::$app->session;
$sessionPHP->open();
$sessionPHP['var'] = $Mailadresses;
return $this->redirect(['/mail/mail-ausgang/stapelmail']);
并在MailAusgangController中:
$session = Yii::$app->session;
$session->open();
$quelladresse = $session['var'];
var_dump($quelladresse);
die();
var_dump
会按预期向我显示地址