Tuesday, March 7, 2017

Laravel display validation errors and trim name

I want to display errors to a user if validation fails, it sends a message back with status code 442 but I want to display error message inside a div. How can that be achieved? it doesn't neccessary have to be done with session('status').

ImageRequest

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',
    ];
}

Controller:

   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">
    
</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);
                }
            });
        }

Another issue is that I am validating name of the website, and I only want to allow characters in alphabet and spaces, however if there is space I want to trim the words into one but it doesn't do it for some reason, and again display an error.

NameRequest

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

Controller:

    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);
}



via Przemek

Advertisement