gpt4 book ai didi

Laravel 5 请求 - 更改数据

转载 作者:行者123 更新时间:2023-12-02 18:06:07 25 4
gpt4 key购买 nike

我遇到过一个实例,我需要更改需要验证的数据,即当没有提交 slug 时,从标题创建一个,然后验证它是否唯一。

该请求有一个方法replace(),该方法应该替换请求上的输入数据,但它似乎不起作用。任何人都可以阐明这一点吗?这就是我所拥有的:

<?php namespace Purposemedia\Pages\Http\Requests;

use Dashboard\Http\Requests\Request;
use Illuminate\Auth\Guard;

class PageRequest extends Request {

/**
* [authorize description]
* @return {[type]} [description]
*/
public function authorize( Guard $auth) {
return true;
}

/**
* [rules description]
* @return {[type]} [description]
*/
public function rules() {
// Get all data from request
$data = $this->request->all();
if( $data['slug'] === '' ) {
// if the slug is blank, create one from title data
$data['slug'] = str_slug( $data['title'], '-' );
// replace the request data with new data to validate
$this->request->replace( $data );
}
return [

'title' => 'required|min:5|max:255',
'slug' => 'min:5|max:255|alpha_dash|unique:pages,slug' . $this->getSegmentFromEnd(),

];
}

}

最佳答案

您应该在 formatInput 方法中执行此操作。您在此方法中返回的数据将用于验证器检查:

例如:

protected function formatInput()
{
$data = $this->all();
if( $data['slug'] === '') {
// if the slug is blank, create one from title data
$data['slug'] = str_slug( $data['title'], '-' );
}

return $data;
}

编辑

这个方法是 2 个月前在 Laravel 中的(我还在使用这个版本),很奇怪它被删除了。

将上述方法更改为以下内容时,您应该收到相同的效果:

public function all()
{
$data = parent::all();
if( $data['slug'] === '') {
// if the slug is blank, create one from title data
$data['slug'] = str_slug( $data['title'], '-' );
}

return $data;
}

编辑2

我把整个工作TestRequest类放在这里。我发送空数据,并且由于修改了 all() 方法,即使空数据,验证也会通过,因为我手动设置这些数据进行验证。如果我删除这个 all() 方法并发送空数据,我当然会显示错误

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class TestRequest extends Request {

/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
'title' => 'required|min:2|max:255',
'slug' => 'min:2|max:255'
];
}

public function response(array $errors){
dd($errors);
}

public function all(){
$data = parent::all();
$data['title'] = 'abcde';
$data['slug'] = 'abcde';
return $data;
}

}

关于Laravel 5 请求 - 更改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28600823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com