Laravel验证刀片语法

时间:2018-07-10 10:46:09

标签: php laravel validation

我有一个这样的下拉菜单 Dropdown list

如何将下拉菜单中选择的选项发送到数据库?我需要刀片语法来发送它们。 这是我的验证代码:

FrontController

public function insert(Request $request)
    {
        $request->validate([
            'jenis' => 'required|string',
            'kategori' => 'required|string',
            'nopol' => 'required|string',

        ]);

        DB::table('park')->insert([
            'jenis' => $request->input('jenis'),
            'kategori' => $request->input('kategori'),
            'nopol' => $request->input('nopol'),
            'created_at' => date('Y-m-d H:i:s'),
            'updated_at' => date('Y-m-d H:i:s'),
            'status' => true;

        ]);

    }

home.blade.php

<div class="control-group">
  <label class="control-label" for="typeahead">Jenis Kendaraan</label>
  <div class="controls">
       <select id="opt" name="jenis">
          <option value="1">Motor</option>
          <option value="2">Mobil</option>
       </select>
   </div>
 </div>

我应该使用@foreach还是直接使用@if @else @endif?

3 个答案:

答案 0 :(得分:0)

我认为您想使用'Motor'或'Mobile'值保存jenis,因为您正在验证为字符串。放为

 <select id="opt" name="jenis">
      <option value="Motor">Motor</option>
      <option value="Mobil">Mobil</option>
   </select>

答案 1 :(得分:0)

无论您写入什么值,都将放入请求对象。

<option value="1">Motor</option>

这是您在值中写入的内容,因此在request()-> input('jenis')中的表单提交中,您将获得1.。您应该提供数字验证或介于(范围)验证类型,请检查laravel文档。

答案 2 :(得分:0)

万一有人通过谷歌搜索偶然发现了如何验证实际Blade语法的信息,请检查一下。

创建自定义验证规则:

<?php

namespace App\Rules;

use Exception;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\File;

class BladeSyntax implements Rule
{
    private $message;

    public function passes($attribute, $value)
    {
        File::put(resource_path('views/validation.blade.php'), $value);

        try {
            view('validation')->render();
            return true;
        }
        catch (Exception $exception) {
            $this->message = $exception->getMessage();
            return false;
        }
    }

    public function message()
    {
        return explode('(', $this->message)[0];
    }
}

然后在验证规则中使用new BladeSyntax