【问题标题】:Validate an array from html form从 html 表单验证数组
【发布时间】:2019-07-15 02:37:55
【问题描述】:

我有一个 html 表单。这是一个片段:

<div class="form-group">
    <label for="answer_text_1">Текст ответа 1</label>
    <textarea class="form-control" id="answer_text_1" rows="3"
              name="answer_text[0]"></textarea>
</div>

<div class="form-group">
    <label for="answer_text_2">Текст ответа 2</label>
    <textarea class="form-control" id="answer_text_2" rows="3"
              name="answer_text[1]"></textarea>
</div>

<div class="form-group">
    <label for="answer_text_3">Текст ответа 3</label>
    <textarea class="form-control" id="answer_text_3" rows="3"
              name="answer_text[2]"></textarea>
</div>

如您所见,我尝试在answer_text 中提供一个数组。接下来我尝试在 Laravel Request 的帮助下验证它并设置我自己的错误消息。这是请求的代码

class CreateQuestionRequest 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
     */
    public function rules()
    {
        return [
            'question' => 'required|string',
            'answer_text.0' => 'required|string',
            'answer_text.1' => 'required|string',
            'answer_text.2' => 'required|string',
            'answer_text.*' => 'distinct',
            'answer' => 'required',
            'cost' => 'required|integer',
            'rating' => 'required|integer',
            'duration' => 'required|integer',
        ];
    }

    public function messages()
    {
        return [
            'question.required' => 'Текст вопроса не установлен.',
            'answer_text.distinct' => 'У вас есть одинаковые варианты ответа.',
            'answer_text.0' => 'Не указан первый вариант ответа.',
            'answer_text.1' => 'Не указан второй вариант ответа.',
            'answer_text.2' => 'Не указан третий вариант ответа.',
            'cost.required' => 'Не указана цена вопроса.',
            'rating.required' => 'Не указана сложность вопроса.',
            'duration.required' => 'Не указано количество времени, данное пользователю на ответ',
            'cost.integer' => 'Цена вопроса должна быть числом',
            'rating.integer' => 'Сложность вопроса должна быть числом',
            'duration.integer' => 'Время на ответ должно быть задано числом',
        ];
    }
}

但如果我的字段 answer_text 是空的,我会看到 follownig:

这是一个默认的 Laravel 错误。但我想查看来自

的消息
 public function messages()
{
    return [
       // ...
        'answer_text.0' => 'Не указан первый вариант ответа.',
        'answer_text.1' => 'Не указан второй вариант ответа.',
        'answer_text.2' => 'Не указан третий вариант ответа.',
        // ...
    ];
}

【问题讨论】:

标签: laravel laravel-validation laravel-request


【解决方案1】:

检查这里是否有自定义错误消息

Custom error messages in laravel

当你显示错误时,你需要这个answer_text.0

【讨论】:

  • 抱歉,我在哪里需要它?我已经有了))见最后的代码清单。
  • 尝试使用此'answer_text.*' =&gt; 'required|string' 并在视图中显示错误使用@if ($errors-&gt;has('name')) &lt;span class="text-danger" role="alert"&gt; &lt;strong&gt;{{ $errors-&gt;first('name') }}&lt;/strong&gt; &lt;/span&gt; @endif
  • 哦,对不起。我只是忘记了为消息数组指定规则。它是'answer_text.2' =&gt; 'error message',,但需要'answer_text.2.required' =&gt; 'error message',。而且效果很好)谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 2018-07-08
  • 2011-08-23
  • 2013-09-03
  • 1970-01-01
相关资源
最近更新 更多