【发布时间】:2017-11-13 03:40:41
【问题描述】:
我试图在验证之前更改 laravel 中的表单输入,但我确实设法更改了 listFormRequest 中的输入。当我在 listFormRequest 和我的控制器中使用 dd($data) 时,这一点很明显。 具体来说,我使用了 thislaravel 5.4 modify data before validation in request。但我的问题是现在我不知道如何将更改的输入保存到数据库。 我的列表形式示例代码是
public function rules()
{
return [
'title' =>'required',
'description' =>'required',
'url' =>'required',
];
}
/**
* Get data to be validated from the request.
*
* @return array
*/
protected function validationData()
{
$data = parent::validationData();
if (is_string($url = array_get($data, 'url')))
//dd($data);
$query = 'amzsome=klwo';
$parsedUrl = parse_url($url);
parse_str($parsedUrl['query']);
$url = 'https://'.$parsedUrl['host'] . $parsedUrl['path']. '?' . $query;
$data['url'] = $url;
//dd($data);
$this->replace($data);
$data->create([ $request->input('url')]);
//dd($data);
return $data;
}
具体来说,我通过分配一些查询来替换 url 的查询部分
对用户提交的链接的新查询。
dd($data) 清楚地向我显示了更改,当我尝试执行代码但更改的输入未存储在数据库中时。
对于更改输入,我有两种选择。(抱歉,这可能会将我的问题变成多个问题)。
1.首先将替换的输入保存到数据库中(如果第二个不可能)。
2.其次(如果可能)按原样保存原始输入并为更改的输入创建新列并将其与原始输入一起存储而不在表单中创建输入字段。
【问题讨论】:
标签: validation laravel-5