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