передача переменных в Laravel
я начинаю создавать CRUD. В методе index контроллера я поместил это:
public function index(){
$productos=Producto::get();
return view('productos.index')->with('productos',$productos);
}
и в представлении index.blade.php:
foreach($productos as $producto)
echo "<tr>";?>
<td class="text-center">{{$producto->id}}</td>
<td class="text-center">{{$producto->nombre}}</td>
<td class="text-center">{{$producto->precio}}</td>
<td>
<a href="{{ route('producto.show',$producto->id) }}" class="btn btn-info">Ver</a>
</td><?php
echo "</tr>";
при попытке запустить приложение в браузере он говорит мне, что он не находит $продукты:
"Undefined переменная: продукты (View:C:\xampp\htdocs\ad\dam2d\resources\views\productos\index.blade.php)"
2 answers
Тест :
public function index(){
$productos=Producto::get();
return view('productos.index' , compact("productos"));
}
Я считаю само собой разумеющимся, что маршрут 'Products.index' в Routes хорошо настроен.
Я отвечаю на этот вопрос, чтобы объяснить реальную проблему и дать решение с лучшими практиками, которые дают руководство будущим посетителям о том, как использовать и использовать Laravel.
Учитывая, что OP указывает, что ваша проблема заключалась в том, чтобы не включать пространство имен Producto
, в соответствии со стандартом PSR-2 (который используется Laravel), объявление для включения класса с помощью use
предпочтительнее, поэтому код контроллера это будет выглядеть следующим образом:
<?php
namespace App\Http\Controllers;
use App\Producto;
class MyController extends Controller
{
public function index()
{
$productos = Producto::get();
return view('productos.index')->with('productos', $productos);
}
// otros métodos
}
Что касается представления, вы должны помнить, что в Blade вам не нужно использовать теги <?php ... ?>
по какой-либо причине, как и в echo
, это плохая практика. Правильный синтаксис:
@foreach($productos as $producto)
<tr>
<td class="text-center">{{$producto->id}}</td>
<td class="text-center">{{$producto->nombre}}</td>
<td class="text-center">{{$producto->precio}}</td>
<td>
<a href="{{ route('producto.show', $producto->id) }}" class="btn btn-info">Ver</a>
</td>
</tr>
@endforeach