Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel请求对象中使用变量名_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 在Laravel请求对象中使用变量名

Php 在Laravel请求对象中使用变量名,php,laravel,laravel-5,Php,Laravel,Laravel 5,我需要能够循环使用laravel请求变量列表,并对它们进行处理。我希望在调用请求对象时能够使用一个变量,这样我就可以在循环中运行它,而不是为每个对象编写一行代码 例如,我的文本输入可能有如下名称 contact_main_name contact_main_telephone contact_main_email contact_sub_name contact_sub_telephone contact_sub_email contact_backup_name contact_backu

我需要能够循环使用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进行更改。

如注释中所述,要做到这一点,请更改调用输入的方法并使用实际的
input()
功能本身

$contactTypes = [
    'main',
    'sub',
    'backup',
    'head'
];

foreach($contactTypes as $type){
    //Start a new contact
    $contact = new Contact;
    $contact->type = $type;
    $contact->name = $request->input("contact_".$type."_name");
    $contact->telephone = $request->input("contact_".$type."_telephone");
    $contact->email = $request->input("contact_".$type."_email");
    $contact->save();
}

如注释中所述,要执行此操作,请更改调用输入的方法,并使用实际的
input()
函数本身

$contactTypes = [
    'main',
    'sub',
    'backup',
    'head'
];

foreach($contactTypes as $type){
    //Start a new contact
    $contact = new Contact;
    $contact->type = $type;
    $contact->name = $request->input("contact_".$type."_name");
    $contact->telephone = $request->input("contact_".$type."_telephone");
    $contact->email = $request->input("contact_".$type."_email");
    $contact->save();
}

另外,您还可以稍微修改它,以使用与字段名匹配的数组索引;这将允许您稍后通过向数据库和HTML添加适当的字段来添加字段,而无需接触代码,并使用array_keys()检索提交的类型,以允许无缝添加类型。只要您的验证很严格,这可能是允许将来扩展的最自动化的方法

例如字段名称:

contact[main][name]
contact[main][telephone]
...
contact[backup][email]
例代码:

foreach(array_keys($request->input('contact')) as $type) {
    $contact = Contact::create($request->input('contact.'.$type));
    $contact->type = $type;
    $contact->save();
}

另外,您还可以稍微修改它,以使用与字段名匹配的数组索引;这将允许您稍后通过向数据库和HTML添加适当的字段来添加字段,而无需接触代码,并使用array_keys()检索提交的类型,以允许无缝添加类型。只要您的验证很严格,这可能是允许将来扩展的最自动化的方法

例如字段名称:

contact[main][name]
contact[main][telephone]
...
contact[backup][email]
例代码:

foreach(array_keys($request->input('contact')) as $type) {
    $contact = Contact::create($request->input('contact.'.$type));
    $contact->type = $type;
    $contact->save();
}

如果您只需要将数据持久化到模型中,您可能需要检查批量分配。请尝试使用
$request->input(“contact_u”)、“$type.“\u name”)
(除非
$request->${“contact”.$type.\u name”};
有效,而且我忽略了实际问题)@TimLewis我觉得没有想到这一点很愚蠢。非常快的回答,谢谢!如果您只需要将数据持久化到模型中,您可能需要检查批量分配。请尝试使用
$request->input(“contact_u”)、“$type.“\u name”)
(除非
$request->${“contact”.$type.\u name”};
有效,而且我忽略了实际问题)@TimLewis我觉得没有想到这一点很愚蠢。非常快的回答,谢谢!我认为
$request->{“contact”..$type.\u name}
也应该可以工作,但是您有一个额外的
$
$request->${
..)所以它正在寻找一个名为
$contact\u无论什么名称
的变量。您确实意识到,如果删除$…$request->{“contact”..$type.\u name};我想$contact->{“contact”..$type.\u name},它将按照您原来的方式工作也应该可以工作,但是您有一个额外的
$
$request->${
)所以它正在寻找一个名为
$contact\u无论什么\u名称
的变量。您确实意识到,如果删除$…$request->{“contact”..$type,它将按照您原来的方式工作;