Laravel将请求拆分为多个请求

时间:2018-10-28 09:11:49

标签: php laravel

我有一个输入很多的表格。为了组织请求,输入具有不同的数组。例如,这里有一些输入字段:

<input id="title" type="text" class="form-control" name="company[title]" required>
<input id="foundingYear" type="text" class="form-control" data-format="date" name="company[foundingYear]" required>
<input id="phone" type="number" class="form-control" name="entrepreneur[phone]" required>

每个模型都有一个名为shortEdit的函数,基本上看起来像这样:

public function shortEdit($request)
{ 
    $request->has('street') ? $this->street = clean($request->street) : null;
    $request->has('housenumber') ? $this->housenumber = clean($request->housenumber) : null;
    $request->has('city') ? $this->city = clean($request->city) : null;
    $request->has('country') ? $this->country = clean($request->country) : null;
    $request->has('phone') ? $this->phone = clean($request->phone) : null;
    $request->has('email') ? $this->email = clean($request->email) : null;
    $request->has('facebook') ? $this->facebook = clean($request->facebook) : null;
    $request->has('twitter') ? $this->twitter = clean($request->twitter) : null;
    ...
}

现在我想我可以像这样调用此函数,从而将我的控制器添加进去

public function store(Request $request) {
    ...
    $company->shortEdit($request->company);
    $entrepreneur->shortEdit($request->entrepreneur);
}

如果我只用shortEdit调用$request函数,它们就完美地工作了,并且在请求中仅是模型的东西。

但是,如果我通过数组调用它们,则可以应用于请求的所有函数(例如$request->has())将无法使用。因此,我认为是否可以将请求拆分为新请求,然后使用它们调用shortEdit函数?

2 个答案:

答案 0 :(得分:0)

请注意,如果要使用数组调用它们,则必须采用这种方式

$request->has('array_name.*');

星号表示数组中的所有项目,或者如果您知道键,则可以通过这种方式完成

$request->has('array_name.key_name');

但是如果您想拆分请求,可以通过创建一个像这样的新请求对象

$request2 = new Request([
  'key_name'=>'value',
  'another_keyname'=>'value',
]);

希望有帮助。

答案 1 :(得分:0)

经过一些测试,我找到了一个可行的解决方案:

如果shortEdit是一个数组,我只需要检入每个$request函数。如果是这样,我将使用该数组创建一个新请求:

if(is_array($request)) {
    $request = new Request($request);
}

现在我可以应$request的要求工作。