Laravel 9:formrequest :: withvalidator方法投掷错误

发布于 2025-02-10 05:06:11 字数 1803 浏览 1 评论 0原文

我有一个带有withValidator()方法的formRequest(我按照Laravel文档中的内容完全复制了),但是当执行类时,返回了错误。

类:

<?php

namespace App\Http\Requests\Conversation;

use Illuminate\Foundation\Http\FormRequest;

class StoreConversationRequest extends FormRequest
{
    /**
     * 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<string, mixed>
     */
    public function rules()
    {
        return [
            'type' => 'required|in:text,media',
            'text' => 'required_if:type,text|string',
            'medias' => 'required_if:type,media|array',
            'medias.*' => 'file|max:5120|mimes:jpg,jpeg,png,pdf,mp3,mp4',
            'phone' => 'required|numeric',
            'conversation' => 'required|exists:conversations,id',
        ];
    }
    
    /**
     * Configure the validator instance.
     *
     * @param  \Illuminate\Validation\Validator  $validator
     * @return void
     */
    public function withValidator($validator)
    {
        $validator->after(function ($validator) {
            if ($this->somethingElseIsInvalid()) {
                $validator->errors()->add('field', 'Something is wrong with this field!');
            }
        });
    }
}

错误:

Method App\Http\Requests\Conversation\StoreConversationRequest::somethingElseIsInvalid does not exist.

我尝试用$ $ this <代码> $ $验证器 ,但错误持续存在:

Method Illuminate\Validation\Validator::somethingElseIsInvalid does not exist.

I have a FormRequest with the withValidator() method (which I copied exactly as it is in the Laravel documentation), but when executing the class an error is returned.

Class:

<?php

namespace App\Http\Requests\Conversation;

use Illuminate\Foundation\Http\FormRequest;

class StoreConversationRequest extends FormRequest
{
    /**
     * 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<string, mixed>
     */
    public function rules()
    {
        return [
            'type' => 'required|in:text,media',
            'text' => 'required_if:type,text|string',
            'medias' => 'required_if:type,media|array',
            'medias.*' => 'file|max:5120|mimes:jpg,jpeg,png,pdf,mp3,mp4',
            'phone' => 'required|numeric',
            'conversation' => 'required|exists:conversations,id',
        ];
    }
    
    /**
     * Configure the validator instance.
     *
     * @param  \Illuminate\Validation\Validator  $validator
     * @return void
     */
    public function withValidator($validator)
    {
        $validator->after(function ($validator) {
            if ($this->somethingElseIsInvalid()) {
                $validator->errors()->add('field', 'Something is wrong with this field!');
            }
        });
    }
}

Error:

Method App\Http\Requests\Conversation\StoreConversationRequest::somethingElseIsInvalid does not exist.

I tried replacing $this with $validator but the error persists:

Method Illuminate\Validation\Validator::somethingElseIsInvalid does not exist.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一遍 2025-02-17 05:06:11

我解决了这个问题:

/**
 * Configure the validator instance.
 *
 * @param  \Illuminate\Validation\Validator  $validator
 * @return void
 */
public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if ($validator->errors()->isNotEmpty()) {
            $validator->errors()->add('field', 'Something is wrong with this field!');
        }
    });
}

但是我不明白为什么文档中的代码不起作用。

I solved problem with this:

/**
 * Configure the validator instance.
 *
 * @param  \Illuminate\Validation\Validator  $validator
 * @return void
 */
public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if ($validator->errors()->isNotEmpty()) {
            $validator->errors()->add('field', 'Something is wrong with this field!');
        }
    });
}

But I don't understand why a code in the documentation is not working.

朮生 2025-02-17 05:06:11

我没有从哪里找到此功能:

somethingElseIsInvalid()

以这种方式尝试:

   public function withValidator( $validator )
{

    if ( $validator->fails() ) {
        // Handle errors
    }
    ...
}

I quite didn't get from where did you find this function:

somethingElseIsInvalid()

Try In this way:

   public function withValidator( $validator )
{

    if ( $validator->fails() ) {
        // Handle errors
    }
    ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文