【问题标题】:Laravel display validation errors and trim nameLaravel 显示验证错误和修剪名称
【发布时间】:2017-07-27 23:06:29
【问题描述】:

如果验证失败,我想向用户显示错误,它会发回一条状态码为 442 的消息,但我想在 div 中显示错误消息。怎样才能做到这一点?不必通过 session('status') 来完成。

图像请求

public function rules()
{   
return [
   'img' => 'file|image',
];   
}
public function messages()
{
    return [
        'img.image' => 'File type is not supported! Use files with extension .jpg/.jpeg/.gif',
    ];
}

控制器:

   public function testing(Requests\ImageRequest $request) {
        if($request->hasFile('img'));
        {
            $image = Input::file('img');
            $filename = time() . '.' . $image->getClientOriginalExtension();
            $path = public_path('images/' . $filename);
            Image::make($image->getRealPath())->resize(200, 200)->save($path);
            $file = $request->file('img');
            return ['url' => url('images/' . $filename)];
        }
           if($imgErrors = $errors->first('img'));
        {
           return redirect('template')->with('status', 'File type is not supported');
        }
        }

template.blade.php:

@if (session('status'))
<div id="mydiv" class="alert alert-success">
    {{ session('status') }}
</div>

JS:

function submitImage(){
    var fd = new FormData($("#upload_form")[0]);
        fd.append( 'img', $('#img') );

$.ajax({
      url:'template',
      data: fd,
      dataType:'json',
      async:false,
      type:'post',
      processData: false,
      contentType: false,
      success: function (data) {
        $("#image").attr("src", data.url);
                }
            });
        }

另一个问题是我正在验证网站的名称,我只想允许字母和空格中的字符,但是如果有空格,我想将单词修剪成一个,但由于某种原因它不会这样做,并再次显示错误。

名称请求

public function rules()
{
    return [
        'newName' => 'required|alpha',
    ];
}

控制器:

    public function postDB(Requests\NameRequest $request) {
    $newName = trim($request->input('newName'));
    $newLat = $request->input('newCode');
    $websites = new Website();
    $websites->name = $newName;
    $websites->html = $newLat;
    $websites->save();
    return redirect('template')->with('status', 'Website has been saved successfully!');
}

JS:

function updateDatabase()
{
    code2 = document.getElementById("content-link2").innerHTML;
    var name = document.getElementById("website_name").value;
    var newCode = document.getElementById('code').value = code2;
    var newName = document.getElementById('name').value = name;
    web_name = ($('#website_name').val());
        console.log(newName);
        console.log(newCode);
}

【问题讨论】:

    标签: jquery ajax laravel laravel-5 laravel-5.3


    【解决方案1】:

    我发现向用户返回消息的最简单方法是使用由 Jeffrey Way 构建的 Flash

    https://github.com/laracasts/flash

    这可用于向用户返回带有错误类型的消息。


    例如,在控制器中你会做这样的事情

    public function myFunction(Request $request)
    {
        // Do your validation with the request
    
        if ($valid) {
            Flash::success('Congrats! Everything was fine');
        } else {
            Flash::error('Oops! Something went wrong');
        }
    
        return redirect()->back()->withInput();
    }
    

    可以保留一个请求的内容并将其刷新到视图以重新填充表单。我强烈建议您阅读有关这方面的 Laravel 文档以获得更好的理解。

    https://laravel.com/docs/5.4/requests#old-input

    【讨论】:

    • 好的,假设我使用这个闪存,我将如何实现它,所以当功能失败时会出现错误?我不想重定向用户,我想保持页面原样,如果我返回,我只会删除用户创建的内容
    • @Przemek 我已经用一个基本示例和 Laravel 文档的链接更新了我的答案,以保留旧输入的内容。您应该能够结合使用两者来实现一个简单的解决方案。
    • } else { 它显示了我意想不到的'}' 为什么?你有 if ($valid) 我需要使用什么变量?
    • @Przemek 我不小心错过了结束;
    • if ($valid) 我需要使用什么变量?
    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2012-12-14
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多