Tuesday, March 7, 2017

Execute only 1 POST function at a time

My problem is that I have 2 same routes for POST but each one of them is assigned to a different button.

If I run first form with action 'BuilderController@testing' everything works fine but other one 'BuilderController@postDB is giving me an error:

$image->getClientOriginalExtension();

Which is part of 'Buildercontroller@testing, so what I want to do is if I run @postDB ignore function @testing but if I run @testing ignore @postDB.

Blade:

@extends('layouts.master') @section('title', 'Website Builder') @section('content')
<meta name="csrf-token" content="" />
<div class=flex-container>
    <div class="flex-item templates">

        @foreach ($templates as $template)
        <a class="content-link" href="">
        <img class="template_img" src=""/>
        </a> @endforeach

    </div>

    <span class="glyphicon glyphicon-chevron-left hiding_template left_side arrows"></span>
    <span class="glyphicon glyphicon-chevron-right hiding_features right_side arrows"></span>
    <div class="pace pace-inactive">
        <div class="pace-progress" data-progress-text="100%" data-progress="99" style="width: 100%;">
            <div class="pace-progress-inner"></div>
        </div>
        <div class="pace-activity"></div>
    </div>
    <div id="content-link2" class="flex-item2">
    @if (session('status'))
    <div id="mydiv" class="alert alert-success">
        
    </div>
    @endif
    </div>
    <div class="flex-item  featuress">
    <form id="upload_form" action="" enctype="multipart/form-data" role="form" method="POST">
    <input type="hidden" name="_token" value="">
    <input name="img" id="img" class="form-control filestyle margin images" data-input="false" type="file" data-buttonText="Upload Logo" data-size="sm" data-badge="false" onchange="submitImage();" />
    </form>

        <button class="btn btn-success form-control margin " data-toggle="modal" data-target="#myModalHorizontal">
    Save Website
</button>

        <!-- Modal -->
        <div class="modal fade" id="myModalHorizontal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <!-- Modal Header -->
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">
                       <span aria-hidden="true">&times;</span>
                       <span class="sr-only">Close</span>
                </button>
                        <h4 class="modal-title" id="myModalLabel">
                            Website Name
                        </h4>
                    </div>
                    <div class="modal-body">
                        <form action="" class="form-horizontal" role="form" method="POST">
                            <div class="form-group">
                                <input type="hidden" name="_token" value="">
                                <input type="hidden" id="code" name="newCode" value="">
                                <input type="hidden" id="name" name="newName" value="">
                                <label class="col-sm-2 control-label" for="website_name">Name</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control" id="website_name" placeholder="Website Name" />
                                </div>
                            </div>
                    </div>

                    <!-- Modal Footer -->
                    <div class="modal-footer">
                        <button type="button" class="form-control margin btn btn-danger" data-dismiss="modal">
                            Close
                </button>
                        <button onClick=" updateDatabase(this);" type="submit" class="form-control margin btn btn-success" id="getRequest changes">
                    Save Website
                </button>
                    </div>
                </div>
            </div>
            </form>

        </div>
        </body>
        <link href="" rel="stylesheet" type="text/css">
        <link href="" rel="stylesheet" type="text/css">
        <link href="" rel="stylesheet" type="text/css">
        <script type="text/javascript" src="{!! asset('js/bootstrap-colorpicker.min.js') !!}">
        </script>
        <script type="text/javascript" src="{!! asset('js/bootstrap-formhelpers.js') !!}">
        </script>
        <script type="text/javascript" src="{!! asset('js/template.js') !!}"></script>
        <script type="text/javascript" src="{!! asset('js/bootstrap-filestyle.min.js') !!}">
        </script>

        </html>
        @endsection @show

Controller:

public function postDB(Request $request) {
    $newName = $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!');
}
    public function website($newName) {
    // Return our "website" object
    $html = Website::where('name', $newName)->first();
    // Pass the contents of the "html" property to the view
    return view('layouts/website', [
        'html' => $html->html
        ]);
    }
    public function testing(Request $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)];
        }
    }

JS:

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

Routes:

Route::get('template', 'BuilderController@templates');
Route::post('template', 'BuilderController@postDB');
Route::post('template', 'BuilderController@testing');



via Przemek

Advertisement