【问题标题】:Laravel select field validationLaravel 选择字段验证
【发布时间】:2021-05-21 12:17:40
【问题描述】:

我目前正在构建一个功能,用户可以从选择框中选择一个选项,一旦选择了一个项目,您就可以单击一个按钮,该按钮会点击我的端点,该端点会提交并存储它。

但是,如果我没有选择任何内容,然后单击按钮,它只会在同一端点上点击 404 页面。

刀片

下面包含选择框和按钮的刀片语法。

<div class="row align-items-center">
    <div class="col-md">
        <small class="text-success">
            please select one of the teams below to store your preference.
        </small>
        {!! Form::open(['route' => ['team.create.link', $team->id],'method' => 'post', 'class' => 'needs-validation','novalidate', null]) !!}
        {!! Form::select('teams[]', $teams, '', ['class' => 'custom-select', 'multiple'], ['required']) !!}
        <button class="btn btn-primary btn-sm mt-3 float-right">
            <i class="fas fa-fw fa-plus-circle mr-2"></i>
            Add</button>
        {!! Form::close() !!}
    </div>
</div>

方法

以下是用于在数据透视表中存储新输入的方法。

public function link(string $teamId)
{
    $team= Team::findOrFail($teamId);

    $links = Input::get('teams');

    $link = Team::findOrFail($links);

    $team->links()->attach($link);

    session()->flash('success', 'Link Added.');

    return back();
}

帮助

如果未选择选项,我将如何修改它以便无法单击按钮并返回所需的错误?我尝试将 ['required'] 添加到 form::select 但我没有运气。

谁能把我推向正确的方向?

【问题讨论】:

  • validation 添加到您的控制器方法中。不要依赖 required 的客户端验证。
  • 我已经看到了 Form::bsText,你可以只添加“必需”,你不能对这个用例做同样的事情吗?
  • HTML 验证应该会阻止您的表单被提交。尝试将type="submit" 添加到您的&lt;button&gt; 或将其更改为&lt;input type="submit"&gt;&lt;select&gt; 标签生成的 HTML 是什么?
  • @Lowtiercoder HTML required 将提供一些验证,但您可以在检查器中将其删除,您的 required 验证将被绕过。另外,如果您不在服务器上进行验证,如何阻止人们向您的端点发送垃圾邮件?
  • @Unflux 好点,我在下面的答案之后添加了验证

标签: laravel eloquent laravel-blade


【解决方案1】:

您可以使用$this-&gt;validate 验证您的请求

use Illuminate\Http\Request;

public function link(Request $reqeust, string $teamId)
{
    $request->validate([
        'teams' => 'required',
    ]);

    $team = Team::findOrFail($teamId);

    $links = Input::get('teams');

    $link = Team::findOrFail($links);

    $team->links()->attach($link);

    session()->flash('success', 'Link Added.');

    return back();
}

查看Validation 的官方 Laravel 文档

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多