как получить значение URL в laravel?

#php #laravel

#php #laravel

Вопрос:

Итак, я попробовал laravel и застрял, когда я хочу получить значение URL в качестве значения для моей базы данных. Вот код в моем контроллере.

 public function store(Request $request, $shoe_id)
{
    //Insert Data
    $cart = new Cart;
    
    $cart->user_id = Auth::user()->id;
    $cart->shoe_id = $shoe_id;
    $cart->quantity = $request->quan;

    $cart->save();

    return redirect()->back();
}
 

и вот проблема, с которой я столкнулся:
в нем говорится, что {shoe_id} — это строка, в которой я хотел быть целым числом из URL

Вот как выглядит мой веб-сайт: мой блейд

Вот мой web.php:

 Route::get('/','homeController@main')->name('home');
Route::get('/home','homeController@main')->name('home');
Route::get('/detail/{shoe_id}', 'homeController@detail');
Route::get('/cart/{shoe_id}','CartController@show');
Route::post('/cart/{shoe_id}','CartController@store');
 

Вот мой блейд:

 @extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div style="text-align:center;">
                    <img src="{{ asset("$cart->shoe_image") }}" alt="" style=" width:350px; height:350px;">
                    <div class="card-header">{{$cart->shoe_name}}</div>
                    <div class="card-header">${{$cart->shoe_price}}</div>
                    <div class="card-header">{{$cart->shoe_description}}</div>
                </div>
                <div class="card-header form-group">
                    <form method="POST" action="/cart/{shoe_id}" enctype="multipart/form-data">
                        @csrf
                        <div class="form-row">
                            <div class="col-md-2">
                                <label for="quantity">Quantity:</label>
                            </div>
                            <div>
                                <input class = "form-control" type="text" id="quantity" name="quan"><br><br>
                            </div>
                            <button class="btn btn-primary" type="submit" name="addcart">Add to Cart</button>
                        </div>
                    </form>
                    
                    {{-- <a class="btn btn-primary" href="#">Add to Cart</a> --}}
                    
                </div>
                
            </div>
        </div>
    </div>
</div>
@endsection
 

что я хочу сделать: ввести введенные данные в базу данных. В моей базе данных есть таблица с именем cart с атрибутом id, user_id, shoe_id.

Комментарии:

1. пожалуйста, покажите вам реализацию маршрута и как вы вызываете URL

2. Опубликуйте свой вид блейда с формой и объявлением маршрута в routes (web.php ) файл в виде блоков кода — пожалуйста, не прикрепляйте изображение

3. Добро пожаловать в SO… что {shoe_id} должно быть?

Ответ №1:

В вашем действии формы вы должны указать фактическое значение для shoe_id, тогда оно будет работать так, как ожидалось. action="/cart/{{ $cart->shoe_id }}"

 @extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div style="text-align:center;">
                    <img src="{{ asset("$cart->shoe_image") }}" alt="" style=" width:350px; height:350px;">
                    <div class="card-header">{{$cart->shoe_name}}</div>
                    <div class="card-header">${{$cart->shoe_price}}</div>
                    <div class="card-header">{{$cart->shoe_description}}</div>
                </div>
                <div class="card-header form-group">
                    <form method="POST" action="/cart/{{ $cart->shoe_id }}" enctype="multipart/form-data">
                        @csrf
                        <div class="form-row">
                            <div class="col-md-2">
                                <label for="quantity">Quantity:</label>
                            </div>
                            <div>
                                <input class = "form-control" type="text" id="quantity" name="quan"><br><br>
                            </div>
                            <button class="btn btn-primary" type="submit" name="addcart">Add to Cart</button>
                        </div>
                    </form>
                    
                    {{-- <a class="btn btn-primary" href="#">Add to Cart</a> --}}
                    
                </div>
                
            </div>
        </div>
    </div>
</div>
@endsection
 

Комментарии:

1. {$cart->shoe_id} будет {{ $cart->shoe_id }}

2. @sta Да, извините, что я виноват. Спасибо, что указали

3. все еще возникла проблема. Как насчет моего контроллера? как получить заданный {{ $cart->shoe_id }}

4. Какое значение dd($shoe_id) в методе store? Он должен получить значение, которое вы передаете из блейд-представления в качестве параметра маршрута

5. это значение: «{shoe_id}»