0

I'm trying to pass the shop_id which is a dependent select from markets table. shop_id should be passed to the sales table along with sales_date, sales_amount & sales_remarks. I was able to pass the asset_id normally but with the dependent selection I'm struggling as I'm not very good at java script. Any kind of help will be appreciated. Thank You!

Here is my Controller:

<?php


namespace App\Http\Controllers;

use App\Asset;
use App\Http\Requests\SaleRequest;
use App\Market;
use App\Sale;
use App\Shop;
use App\User;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;

class SaleController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth');
    }

    public function create()
    {
        $user = User::pluck('name', 'id');
        $asset = Asset::pluck('asset_tag', 'id');
        $shop = Shop::pluck('shop_name', 'id');
        $markets = Market::all();

        $sales = Sale::with('user', 'asset', 'shop')->get();
        return view('sales.create', ['user' = $user, 'asset' = $asset, 'sales' = $sales, 'shop' => $shop], compact('markets'));

    }

    public function store(SaleRequest $request)
    {
        $data = $request->only(['user_id', 'asset_id', 'shop_id', 'sales_date', 'sales_amount',
            'sales_remarks', 'sales_status', 'created_by', 'updated_by']);

        $sale = Sale::create($data);

        session::flash('sale_msz', 'Sales Amount Successfully Enlisted');
        return redirect('/sales/create');

    }

    public function shops()
    {
        $markets_id = Input::get('market_id');
        $shops = Shop::where('market_id', '=', $markets_id)->get();
        return response()->json($shops);
    }
}

Here is the Route:

Route::resource('sales', 'SaleController');

Route::get('/json-shops','SaleController@shops');

Create.blade.php:

{!! Form::open(['url' ='/sales', 'method' =>'post']) !!}
    @include('sales.form')
{!! Form::close() !!}
<br>

form.blade.php:

<div class="form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12">
       <br{!! Form::label('Sales Date') !!}
    </label>
    <div class="col-md-9 col-sm-9 col-xs-12">

        <div class='input-group date' id='myDatepicker2'>
          {!! Form::text('sales_date', isset($sales->sales_date) ? $sales->sales_date : null, ['class'='form-control', 'required'=>'required', 'placeholder' ='2018-12-31']) !!}
            <span class="input-group-addon">
                <span class="glyphicon glyphicon-calendar"></span>
            </span>
        </div>

    </div</div>

        <div class="form-group">
            <label for="">Choose Market</label>
            <select class="form-control" name="markets" id="markets">
              <option value="0" disable="true" selected="true">Select Markets </option>
                @foreach ($markets as $key =$value)
                  <option value="{{$value->id}}">{{ $value->territory }}</option>
                @endforeach
            </select>
          </div>

          <div class="form-group">
            <label for="">Shop</label   
<select class="form-control" name="shops" id="shops">
<option value="0" disable="true selected="true">Select Shops</option>
</select>

         </div>
            <script type="text/javascript">

      $('#markets').on('change', function(e){
        console.log(e);
        var market_id = e.target.value;
        $.get('/json-shops?market_id=' + market_id,function(data) {
          console.log(data);
          $('#shops').empty();
         $('#shops').append('<option value="0" disable="true" selected="true">Select Shops</option>');
          $.each(data, function(index, shopsObj){
          $('#shops').append('<option value="'+ shopsObj.id +'">'+ shopsObj.shop_name +'</option>');
          })
        });
      });

    </script>


     <div class="form-group">
         <label class="control-label col-md-3 col-sm-3 col-xs-12">
           {!! Form::label('Sales Amount') !!}
         </label>
         <div class="col-md-9 col-sm-9 col-xs-12">

            {!! Form::number('sales_amount', isset($sales->sales_amount) ? $sales-sales_amount  : null, ['class'=>'form-control', 'required'=>'required','placeholder' ='0.00']) !!}
         </div</div>




     <div class="form-group">
         <label class="control-label col-md-3 col-sm-3 col-xs-12">
         {!! Form::label('Sales Remarks') !!}
         </label>
         <div class="col-md-9 col-sm-9 col-xs-12">
           {!! Form::textarea('sales_remarks', isset($sales->sales_remarks) ?  
           $sales->sales_remarks : null, ['class'='form-control','placeholder' ='Write remarks']) !!} </div>
         </div>

    <div class="form-group">
         <div class="col-md-9 col-sm-9 col-xs-12 col-md-offset-3"  
             <button type="submit" class="btn btn-success btn-sm">Submit</button>
             <button type="reset" class="btn btn-warning btn-sm">Reset</button>
         </div</div>

Sales Model

class Sale extends Model
{
    use SoftDeletes;
    protected $dates = ['deleted_at','sales_date'];
    protected $fillable = ['user_id', 'asset_id', 'shop_id','sales_date', 'sales_amount', 'sales_remarks','sales_status'
        , 'created_by','updated_by'];

    public function user()
    {
        return $this->belongsTo('App\User');
    }
    public function asset()
    {
        return $this->belongsTo('App\Asset');
    }
    public function shop()
    {
        return $this->belongsTo('App\Shop');
    }
}

1 Answers1

0

You are trying to load a shop_id value from the request, but the name of the <select> is shops.

Change the name of the select to shop_id (I'm assuming the Sales model has a shop_id field):

<select class="form-control" name="shop_id" id="shops">
Thomas
  • 8,426
  • 1
  • 25
  • 49
  • I have changed the name="shop_id". still shop_id returning null. Thing is I'm getting the value but don't know how to pass the value. May be a post route will work in this case. array:6 [▼ "user_id" => "1" "shop_id" => null "sales_date" => "2019-08-05" "sales_amount" => "100" "sales_remarks" => null "created_by" => "Super Admin" ] – Atlantis_Shahriar Aug 04 '19 at 18:24
  • There are some errors in your HTML (like an unclosed ` – Thomas Aug 05 '19 at 15:30
  • Those happened while posting. This is first time i'am posting something here. View is ok. While I dd in controller shop_id is not passing that's the issue. I copied the dependent selection from internet but they only show the selection not passing the selected value to DB. :/ – Atlantis_Shahriar Aug 07 '19 at 04:42