Как мы передаем пользовательскую переменную в контроллере блейду в Laravel

#laravel

#laravel

Вопрос:

Это работает отлично, но я хочу, чтобы оператор return был в <p> теге в представлении

LARAVEL 8.x

 $product = Product::find($id);

if(!$product) {
  abort(419);
}
    
$value = $request->session()->get('id');
    
if ($value == $id) {
  return "You can purchase an item at a time!";
} else {
  $initial = $product->quantity;

  if ($initial > 0)  {
    $final = $initial - 1;

    $product->quantity = $final; 
    $product->save();

    $request->session()->put('id', $id);

    var_dump($value);
    var_dump($product->quantity); 
  } else {
    return  "out of stock";
  }   
}
            
return redirect()->action([ProductController::class, 'index']);
 

Я пробовал, как это сделать. Хотя я мог бы использовать @if on blade для $product->quantity отображения «нет в наличии», но «вы можете приобрести только товар за раз».

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

1. может быть, вам следует использовать return redirect()->action([ProductController::class, 'index'])->with(['[VARIABLE NAME], => [YOUR VARIABLE]']) или, если вы настраиваете имя веб-маршрута, сделайте так return redirect()->route('products.index', '[YOUR VARIABLE HERE]')

2. Где вы получаете ошибку?

3. Как мне использовать ее из блейда @codeformoney

Ответ №1:

Вот как вы это сделаете

КОНТРОЛЛЕР, КОТОРЫЙ ВЫ ПРЕДОСТАВИЛИ

 $product = Product::find($id);

if(!$product) {
  abort(419);
}
    
$value = $request->session()->get('id');
    
if ($value == $id) {
  return "You can purchase an item at a time!";
} else {
  $initial = $product->quantity;

  if ($initial > 0)  {
    $final = $initial - 1;

    $product->quantity = $final; 
    $product->save();

    $request->session()->put('id', $id);

    var_dump($value);
    var_dump($product->quantity); 
  } else {
    return  "out of stock";
  }   
}
            
return redirect()->route('products.index')->with(['product' => $product]);
 

В вашем web route файле у вас должно быть вот так.

 Route::get('/products', [ProductController::class, 'index'])->name('product.index');
 

Затем в вашем блейд-компоненте вы можете

 <h1> {{ $product->id ?? 'No Product ID given' }} </h1>