jeudi 6 décembre 2018

How to save static form fields' inputs into database by id in Laravel?

I am creating a static form of 4 rows (8 inputs) it's for recurring services as package pricing using Laravel 5.5 version. Each row includes 2 fields the first is the package name and the second field is the package price based on 1 month, 3 months, 6 months and 1 Year. The view is showing the fields but not saving the inputs into database.

The Package Controller

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\models\Package;
use App\models\Package as AppPackage;
use App\models\Subscription;
use App\User;
use App\Invoice;
use App\Item;
use Auth;
use Lang;
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Input;

class PackagesController extends Controller
{

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

    public function index()
    {
      $packages = AppPackage::orderBy('item_number', 'ASC')->get();
      $packages->item_number = '';
      $packages->item_name = '';
      $packages->amount = '';
      session()->put('info', Lang::get('messages.packages_info_warning'));
      return view('packages.index')->with('packages', $packages);
    }

    public function edit_packages(Request $request){
       $package = new AppPackage;
       $package->item_name = '';
       $package->amount = '';
       $package->save();
       return back();
    }

public function save_packages(Request $request)
{
    $this->validate($request, [
      'item_name' => 'required',
      'amount'=> 'required'
    ]);

    $packages = new UstaziPackage;
    $id = $packages->orderBy('id', 'DESC')->pluck('id')->first();
    $item_number = $id + 1;

    //$package_numbers = UstaziPackage::where('item_number', '=', $item_number);

    foreach ($packages as $package) {
        $package_number = UstaziPackage::where('item_number', '=', $item_number);
        $package_name = UstaziPackage::where('item_name', '=', Input::get('item_name'))->get();
        $package_amount = UstaziPackage::where('amount', '=', Input::get('amount'))->get();

    }
    $packages->save();
    return back();
}
}

The Package Model

namespace App\models;

use Illuminate\Database\Eloquent\Model;

class Package extends Model
{
  protected $table = 'package';

    protected $fillable = [
      'id', 'item_number', 'item_name', 'amount'
    ];

    public function teacher(){
      return $this->belongsTo('App\models\Teacher');
    }

    public function subscription(){
      return $this->belongsTo('App\models\Subscription');
    }

    public function get_packages(){
       return $packages = Packages::whereHas('package', function($query){
          $query->where('item_number', '=', $this->id);
        })->get();
    }

}

The View of Packages

@extends('layouts.app')

@section('header')
  <h1>@lang('messages.packagessettings')</h1>
  <hr />
  <div style="clear:both">&nbsp;</div>
@endsection
@section('content')
<form action="" method="POST">
  
  <div class="table-responsive">
        <table class="table">
                <thead>
                    <tr>
                      <th scope="col" class="text-center">#</th>
                      <th scope="col" class="text-center">@lang('messages.packageduration')</th>
                      <th scope="col" class="text-center">@lang('messages.packagename')</th>
                      <th scope="col" class="text-center">@lang('messages.packageamoutn')</th>
                    </tr>
                </thead>

                <tbody>
                    <tr>
                      <th scope="row">1</th>
                      <th scope="col">@lang('messages.1mpackage')</th>
                      <td><input type="text" class="form-control" id="item_name" name="item_name" value=""></td>
                      <td><input type="text" class="form-control" id="amount" name="amount" value=""></td>
                    </tr>
                    <tr>
                      <th scope="row">2</th>
                      <th scope="col">@lang('messages.3mpackage')</th>
                      <td><input type="text" class="form-control" id="item_name" name="item_name" value=""></td>
                      <td><input type="text" class="form-control" id="amount" name="amount" value=""></td>
                    </tr>
                    <tr>
                      <th scope="row">3</th>
                      <th scope="col">@lang('messages.6mpackage')</th>
                      <td><input type="text" class="form-control" id="item_name" name="item_name" value=""></td>
                      <td><input type="text" class="form-control" id="amount" name="amount" value=""></td>
                    </tr>
                    <tr>
                      <th scope="row">4</th>
                      <th scope="col">@lang('messages.1ypackage')</th>
                      <td><input type="text" class="form-control" id="item_name" name="item_name" value=""></td>
                      <td><input type="text" class="form-control" id="amount" name="amount" value=""></td>
                    </tr>
                </tbody>
        </table>
  </div>

  <div style="clear:both">&nbsp;</div>

  <div class="form-group float-right">
    <button type="submit" class="btn btn-primary">@lang('messages.save')</button>
  </div>


</form>
@endsection

And this is how I'm calling them in the frontend for use pick

  @foreach($packages as $package)
    <select id="packages">
        <option value=" - "> - </option>

        <input type="hidden" name="item_name" value="" />
        <input type="hidden" name="item_number" value="">

        <!-- Set the revised subscription price and terms. -->
        <input type="hidden" name="currency_code" value="USD">
        <input type="hidden" name="a3" value="">
        <input type="hidden" name="p3" value="6">
        <input type="hidden" name="t3" value="M">
    </select>
  @endforeach



from Newest questions tagged laravel-5 - Stack Overflow https://ift.tt/2G2GUHL
via IFTTT

Aucun commentaire:

Enregistrer un commentaire