【发布时间】:2019-03-23 00:29:10
【问题描述】:
我需要能够遍历 laravel 请求变量的列表并对它们做一些事情。我希望能够在调用请求对象时使用一个变量,这样我就可以循环运行它,而不是为每个对象编写一行代码。
例如,我的文本输入可能具有类似这样的名称
contact_main_name
contact_main_telephone
contact_main_email
contact_sub_name
contact_sub_telephone
contact_sub_email
contact_backup_name
contact_backup_telephone
contact_backup_email
在我的请求中,我不想写
$request->contact_main_name
$request->contact_main_telephone
对于我可能拥有的每种不同类型的联系人,我希望能够像这样遍历它们
$contactTypes = [
'main',
'sub',
'backup',
'head'
];
foreach($contactTypes as $type){
//Start a new contact
$contact = new Contact;
$contact->type = $type;
$contact->name = $request->${"contact_".$type."_name"};
$contact->telephone = $request->${"contact_".$type."_telephone"};
$contact->email = $request->${"contact_".$type."_email"};
$contact->save();
}
在调用 laravel $request 时如何使用变量名,以便我可以构建一个可能类型的数组并循环遍历它们?
注意
我知道我可以编辑输入字段本身,使其看起来像name="contact[type][name]",然后循环遍历它们,但我不能更改输入名称,我必须通过控制器本身的 php 来完成。
【问题讨论】:
-
如果您只需要将数据持久化到模型中,您可能需要检查质量分配。
-
尝试使用
$request->input("contact_".$type."_name");(除非$request->${"contact_".$type."_name"};有效,而我错过了实际问题) -
@TimLewis 没想到这一点我觉得很愚蠢。很好的快速回答,谢谢!