【问题标题】:Laravel split request into multiple requestsLaravel 将请求拆分为多个请求
【发布时间】:2018-10-28 17:46:15
【问题描述】:

我有一个包含大量输入的表单。为了组织请求,输入具有不同的数组。例如这里的一些输入字段:

<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);
}

如果我只用 $request 调用 shortEdit 函数并且在请求中只是模型的东西,那么 shortEdit 函数就可以完美地工作。

但是,如果我使用数组调用它们,则可以应用于请求的所有函数(例如 $request-&gt;has())都不再起作用。所以我认为是否可以将请求拆分为新请求并与它们一起调用shortEdit 函数?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    请注意,如果您要使用数组调用它们,您必须这样做

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

    星号表示数组中的所有项目,或者如果你知道密钥,你可以这样做

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

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

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

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

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

      现在我可以使用$request 作为请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-17
        • 2023-04-02
        • 1970-01-01
        • 2017-06-16
        • 2011-09-12
        • 2019-12-17
        • 1970-01-01
        • 2015-08-07
        相关资源
        最近更新 更多