在 Laravel 的 Form Request
验证类中, passedValidation
方法是一个可以被重写的钩子方法,用于在验证成功后执行一些额外的操作。换句话说,当所有的验证规则都通过后,Laravel 便会调用这个方法。
passedValidation
方法的使用场景包括但不限于:
下面是一个使用 passedValidation
方法的示例:
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StorePostRequest extends FormRequest { public function authorize() { return true; // 允许所有用户使用此请求 } public function rules() { return [ 'title' => 'required|string|max:255', 'content' => 'required|string', // 其他验证规则... ]; } public function passedValidation() { // 这个方法将在验证成功后被调用 // 例如,我们可以将请求的数据转换成某种格式,或做其他业务逻辑 $this->merge([ 'slug' => str_slug($this->title), // 其他处理... ]); } public function messages() { return [ 'title.required' => '标题是必填项目。', 'content.required' => '内容是必填项目。', ]; } }
passedValidation
方法: 当所有的验证规则都正常通过以后,此方法会被调用。这是一个好机会来修改请求数据或执行其他任何关心的逻辑。
使用 $this->merge()
: 在示例中,我们使用 $this->merge()
方法将请求中一个字段的值(标题)转化为一个新的字段(slug),这通常用于生成符合 URL 的友好名称。
调用一致性: 在控制器中使用这个 Form Request
类时,如果表单输入通过了验证,则在 store
方法中调用的 $request
实例将包含新合并进来的数据。
与其他请求类一样,使用你的 Form Request
时,控制器会像这样:
namespace App\Http\Controllers; use App\Http\Requests\StorePostRequest; class PostController extends Controller { public function store(StorePostRequest $request) { // 在这里可以直接使用 $request->slug 了,因为我们在 passedValidation 中已经合并了 $postData = [ 'title' => $request->title, 'content' => $request->content, 'slug' => $request->slug, // 使用我们刚合并的字段 ]; // 处理保存你的逻辑,比如使用模型保存数据 } }
passedValidation
方法是一个强大的工具,允许你在验证成功后执行额外逻辑。它能够帮助你改进请求处理的逻辑,比如对数据进行格式化或增强,从而让你的控制器更加简洁和清晰。希望这个解释对您有所帮助!
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。