Laravel 10:验证不适用于所有字段

Laravel 10: The validate not Work with all fields

提问人:kapi 提问时间:10/12/2023 最后编辑:Paul T.kapi 更新时间:10/12/2023 访问量:46

问:

我有下一个问题,我需要一些帮助。

我有一个简单的表格:

@if (session('error'))
<div class="position-fixed bottom-0 end-0 alert alert-danger">
{{ session('error') }}
</div>
@endif
@error('nombre')
<div class="position-fixed bottom-0 end-0 alert alert-danger">
{{ $message }}
</div>
@enderror
 <form  method="POST" action="{{ route('user') }}">
  @csrf

  <input type="text" name="nombre">
  <input type="text" name="alias" >
  <input type="submit" value="Crear" class="btn btn-primary my-2" />
</form>

然后在控制器中:

namespace App\Http\Controllers;

use App\Models\UserModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;


public function store(Request $request):Request
    {

        $this->validate($request, [
            'name'=>'nullable|required',
            'alias'=>'nullable|required'
         ]);

        $usuario = new UsuariosModel;
        $usuario->name= $request->name;
        $usuario->alias = $request->alias;
        $usuario->save();

        return redirect()->route('usuarios')->with('success','Usuario creado correctamente.');
    }

和路线:

Route::post('/user', [UserController::class, 'store'])->middleware('auth')->name('user');

如果我删除验证,插入工作正常,名称验证成功,但别名不成功。

如果我只放,它没有任何作用。'alias'=>'nullable|required'

我无法以这种简单的形式找到错误。

Laravel 验证

评论

1赞 Paul T. 10/12/2023
为什么验证检查 和 ,但输入显然具有 和 属性?namealiasnombrealiasname=
0赞 kapi 10/12/2023
我翻译了(错误)这篇文章,但在原文中都是 nombre 和 alias。插入在mysql上很好(如果我删除验证)。
1赞 Yoga Meleniawan P 10/12/2023
我认为你的验证是矛盾的,你是什么意思?可为 null,但你也采取必需的,它不起作用。如果不填写别名输入,则即使添加 .因此,您必须删除其中之一或'alias'=>'nullable|required'requirednullablenullablerequired

答:

0赞 shozue 10/12/2023 #1

刀片形式

<form  method="POST" action="{{ route('user') }}">
  @csrf

  <input type="text" name="name">
  <input type="text" name="alias" >
  <input type="submit" value="Crear" class="btn btn-primary my-2" />
</form>

Usuarios模型

class UsuariosModel extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'alias ',
    ];
}

控制器

   public function store(StoreRequest $request):Request
    {
        $usuario = UsuariosModel::create($request->validated());

        return redirect()->route('usuarios')->with('success','Usuario creado correctamente.');
    }

Noew 使用 artisan 创建商店请求

php artisan make:request StoreRequest

并将 authorization 返回 true

    <?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

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

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
     */
    public function rules(): array
    {
        return [
            'name' => 'required|string',
            'alias' => 'required|string',
        ];
    }
}

如果您使用 nullable,则没有错误,只需删除 nullable