Laravel 5 On POST Status 302 Found

17,047

The name of your category and subcategory fields are "category" and "subcategory" but are being referred to as "category_id" and "subcategory_id" respectively in your Controller code.

Share:
17,047
eldewiny
Author by

eldewiny

Updated on June 30, 2022

Comments

  • eldewiny
    eldewiny almost 2 years

    I'm trying to create new post useing laravel , ajax and s3 , But every time i try submit the form i get Status Code:302 Found , I Hope really some help me

    Firebug

    Here in firebug result image

    META

    <meta name="csrf" value="{{ csrf_token() }}">
    

    VIEW

    The form view with csrf token

    <div class="col-md-8 col-md-offset-2">
                    {!! Form::open(array(
                        'class' => 'form',
                        'novalidate' => 'novalidate',
                        'files' => true
                    )) !!}
    
                    <div class="form-group">
                        {!! Form::label('title', 'Title: ') !!}
                        {!! Form::text('title', null, ['class' => 'form-control']) !!}
                    </div>
                    <div class="form-group">
                        <label for="cats">Select Category list :</label>
                        <select class="form-control" id="category" name="category">
                            <option value="">Select Category</option>
                            @foreach($category as $cat)
                                <option value="{{$cat->id}}">{{$cat->name}}</option>
                            @endforeach
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="cats">Select Subcategory list :</label>
                        <select class="form-control" id="subcategory" name="subcategory">
                            <option value=>Select Subcategory</option>
                                <option value=""></option>
                        </select>
                    </div>
                    <div class="form-group">
                        {!! Form::label('image', 'Upload Image') !!}
                        {!! Form::file('image', null, ['class' => 'form-control']) !!}
                    </div>
                    <div class="form-group">
                        {!! Form::label('description', 'Description: ') !!}
                        {!! Form::textarea('description', null, ['class' => 'form-control']) !!}
                    </div>
                    <div class="form-group">
                        {!! Form::label('email', 'Your Email: ') !!}
                        {!! Form::text('email', null, ['class' => 'form-control']) !!}
                    </div>
                    <div class="form-group">
                        {!! Form::submit('Post Free Ad', ['class' => 'btn btn-primary form-control']) !!}
                    </div>
                    {!! Form::close() !!}
                </div>
    

    CONTROLLER

    First valid the requist and than create new email for the user if he did't have and than save the post with the user

    public function storePostAds(Request $request)
        {
            $this->validate($request, [
               'title' => 'required',
               'description' => 'required',
               'image' => 'required',
               'category_id' => 'required',
               'subcategory_id' => 'required',
            ]);
            $email = $request['email'];
            $title = $request['title'];
            $description = $request['description'];
            $category = $request['category_id'];
            $subcategory = $request['subcategory_id'];
            $image = $request->file('image');
            $user = User::where('email', $email)->first();
            if(!$user){
                $user = new User();
                $user->email = $email;
                $user->save();
            }
            if($image->isValid()){
                $name = $image->getClientOriginalName();
                $key = 'images/'.$name;
                Storage::disk('s3')->put($key, file_get_contents($image));
            }
            $post = new Post();
            $post->title = $title;
            $post->description = $description;
            $post->category_id = $category;
            $post->subcategory_id = $subcategory;
            $post->image = $image;
            $user->posts()->save($post);
            return redirect('/');
        }
    

    Ajax

    ajax to get subcategory foreach category after select

    (function($){
        $('#category').on('change', function(e){
    
            var cat_id = e.target.value;
            $.get('/ajax-subcategory?cat_id=' + cat_id, function(data){
                var subcategory = $('#subcategory');
                subcategory.empty();
                $.each(data, function(index, subcatObj){
                   subcategory.append('<option value="'+subcatObj.id+'">'+subcatObj.name+'</option>');
                });
            });
        });
    }(jQuery));