如何在显示错误页面之前发出警报?

时间:2019-07-17 02:42:19

标签: laravel

我有一些数据库,其中一个表的属性是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_teknisinama_lengkapno_hppasswordre_password,   updated_atcreated_at)值(SHU27HSY,Elang Bayu,   081234037169,halo,halo,2019-07-17 02:38:53,2019-07-17 02:38:53))“

2 个答案:

答案 0 :(得分:0)

您可以从文档中检查 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

Plz,请先了解如何对请求进行验证,然后编写示例代码

答案 1 :(得分:0)

因为描述提供给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

来实现