Как перенаправить на страницу, которая показывает только данные, вставленные в базу данных с этого идентификатора - PullRequest
1 голос
/ 16 апреля 2020

Например, если есть форма, которая создает клиентов, и когда вы заполняете форму и отправляете страницу, она должна перенаправить и показать данные, которые были вставлены в эту форму с указанным c индивидуальным идентификатором. в моем случае он перенаправляет на страницу и просматривает все данные в базе данных.

Вот мой Web.php

Route::get('customers','CustomersController@index');
Route::get('customers/create','CustomersController@create');
Route::post('customers','CustomersController@store');
Route::get('customers/{customer}','CustomersController@show');

Вот мой контроллер

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Customer;

use App\Company;

class CustomersController extends Controller
{
    public function index(){

        $customers = Customer::all();

        return view('customers.index',compact('customers'));

    }

    public function create(){

        $companies = Company::all();

        return view ('customers.create',compact('companies'));
    }

    public function store()
    {

        $data = request()->validate([
            'name'=>'required | min:3',
            'email'=>'required | email',
            'active'=>'required ',
            'company_id'=>'required',
        ]);



        Customer::create($data);

        return redirect('customers');
    }

    // * Route Model binding
    public function show(Customer $customer){

        return view('customers.show',compact('customer'));
    }
}

Вот мой Customer Model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Customer extends Model
{

    protected $guarded = [];


    public function getActiveAttribute($attribute){
        return [
            0 => 'Inactive',
            1 => 'Active',
        ] [$attribute];
    }

    public function scopeActive($query){
        return $query->where('active',1);
    }

    public function scopeInactive($query){
        return $query->where('active',0);
    }

      public function company()
      {
          return $this->belongsTo(Company::class);
      }
}

вот мой Create Blade

@extends('layouts')

@section('title','Add New Customer')

@section('content')

<div class="row">
    <div class="col-12">
        <h1>Add New Customer</h1>
    </div>
</div>

<div class="row">
    <div class="col-12">
        <form action="/customers" method="POST" >
          <div class="form-group">
            <label for="name">Name</label>
            <input type="text" class="form-control" name="name" value="{{old('name')}}">
            <div>{{$errors->first('name')}}</div>
          </div>

          <div class="form-group">
            <label for="email">Email</label>
            <input type="text" class="form-control" name="email" value="{{old('email')}}">
            <div>{{$errors->first('email')}}</div>
          </div>

          <div class="form-group">
              <label for="">Customer Status</label>
              <select name="active" id="active" class=" form-control">
                  <option value="" disabled>Select Customer Status</option>
                  <option value="1">Active</option>
                  <option value="0">Inactive</option>
              </select>
          </div>

          <div class="form-group">
              <label for="company_id">Company</label>
              <select name="company_id" id="company_id" class=" form-control">
                  @foreach ($companies as $company)
                      <option value="{{ $company->id }}">{{ $company->name }}</option>
                  @endforeach
              </select>
          </div>

          <button type="submit" class=" btn btn-dark">Add Customer</button>
          @csrf
        </form>
    </div>
</div>
@endsection

вот мой show blade

@extends('layouts')

@section('title','Details for ' . $customer->name)

@section('content')

<div class="row">
    <div class="col-12">
        <h1>Details for {{ $customer->name }}</h1>
    </div>
</div>

<div class="row">
    <div class="col-12">
      <p><strong>Name : </strong> {{ $customer->name }}</p>
      <p><strong>Email : </strong> {{ $customer->email }}</p>
      <p><strong>Company : </strong> {{ $customer->company->name }}</p>
      <p><strong>Status : </strong> {{ $customer->active }}</p>
    </div>
</div>
@endsection

1 Ответ

1 голос
/ 16 апреля 2020

Перенаправление на маршрут show, а не на маршрут клиентов index:

$customer = Customer::create($data);

return redirect('customers/' . $customer->id);
...