【问题标题】:How to make alert before show error page?如何在显示错误页面之前发出警报?
【发布时间】:2019-07-17 14:05:06
【问题描述】:

我有一些数据库,其中一个表的属性是 ID_teknisi,具有唯一键。我正在尝试检查我是否包含相同的值,并显示错误页面。所以我想在错误页面之前在这个页面上显示一个警报。

我使用 Laravel 和 MySQL,语言 PHP。

我已经在 Laravel 的控制器中编码。

public function store(Request $request)
    {
        $data = new ModelTeknisi();
        if ($data->ID_teknisi==$request->ID_teknisi){
            return alert('ID Teknisi sudah ada!');history.go(-1); 
        } else {
        $data->ID_teknisi = $request->ID_teknisi;
        $data->nama_lengkap = $request->nama_lengkap;
        $data->no_hp = $request->no_hp;
        $data->password = $request->password;
        $data->re_password = $request->re_password;
        $data->save();
            return redirect()->route('teknisi.index')->with('alert-success','Berhasil Menambahkan Data!');
        }
    }

我希望这会显示警报。但显示错误。

Illuminate\Database\QueryException 与消息一起抛出 “SQLSTATE [23000]:违反完整性约束:1062 重复条目 键“ID_teknisi”的“SHU27HSY”(SQL:插入acc_teknisi (ID_teknisi, nama_lengkap, no_hp, password, re_password, updated_at, created_at) 值 (SHU27HSY, Elang Bayu, 081234037169, 晕, 晕, 2019-07-17 02:38:53, 2019-07-17 02:38:53))"

【问题讨论】:

    标签: laravel


    【解决方案1】:

    你可以从文档中检查这个 https://laravel.com/docs/5.8/validation#form-request-validation

    public function rules()
    {
        return [
            'ID_teknisi' => 'required|unique:acc_teknisi,ID_teknisi'
        ];
    }
    

    并对所有字段进行验证 并在您的刀片文件中

    @if($errors->has('ID_teknisi'))
     {{$errors->first('email');}}
    @endif
    

    请先看看如何对请求进行验证,然后编写您的示例

    【讨论】:

      【解决方案2】:

      由于描述提供给ID_teknisi 的值的错误已经存在。因此,每次插入数据库之前,您都必须检查唯一值。

      根据您的方法,您将 javascript 应用到 PHP 中,这不是正确的方法。

      $data = new ModelTeknisi();
      if ($data->ID_teknisi==$request->ID_teknisi){
          return alert('ID Teknisi sudah ada!');history.go(-1); 
      }
      

      你可以通过稍微修改你的方法来实现它。

      public function store(Request $request)
      {
          // First check if the value should be unique
          $request->validate([
              'ID_teknisi' => 'required|unique:acc_teknisi,ID_teknisi'
          ], [
              'ID_teknisi.unique' => 'ID Teknisi sudah ada!'
          ]);
      
      
          $data = new ModelTeknisi();
      
          $data->ID_teknisi = $request->ID_teknisi;
          $data->nama_lengkap = $request->nama_lengkap;
          $data->no_hp = $request->no_hp;
          $data->password = $request->password;
          $data->re_password = $request->re_password;
          $data->save();
      
          return redirect()->route('teknisi.index')
               ->with('alert-success','Berhasil Menambahkan Data!');
      
      }
      

      并在您的刀片模板上添加以下代码。

      @if($errors->has('ID_teknisi'))
          <script>alert({{ $errors->first('ID_teknisi') }});</script>
      @endif
      

      如果您使用的是旧版本的 Laravel,那么您可以通过 https://laravel.com/docs/5.8/validation#manually-creating-validators 实现它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 1970-01-01
        • 2018-07-29
        • 1970-01-01
        相关资源
        最近更新 更多