Привет, ребята, у меня есть стол производители (колонны ‘Manufacturer_id’, «Производитель») и хотите динамически отображать список «select» на основе этой таблицы в другом, но связанном представлении ‘Asset.blade.php’.
Модель — Asset.php
namespace App;
class Asset extends Model
{
protected $primaryKey = 'asset_id';
}
Контроллер — AssetController
namespace App\Http\Controllers;
use App\Asset;
use App\Manufacturer;
use Illuminate\Http\Request;
class AssetController extends Controller
{
public function asset(){
$assets = Asset::all();
return view('viewAsset', ['assets' => $assets]);
}
public function getmanufacturerlist() {
$Manufacturer = Manafacturers::all();
return view('manufacturer')->with('data', $Manufacturer);
}
public function add(Request $request){
$this->validate($request, [
'asset_id' => '',
'asset_category_id' => 'required',
'manufacturer_id' => 'required',
'department_id' => 'required',
]);
$assets = new Asset;
$assets ->asset_id = $request->input('asset_id');
$assets ->asset_category_id = $request->input('asset_category_id');
$assets ->manufacturer_id = $request->input('manufacturer_id');
$assets ->department_id = $request->input('department_id');
$assets ->save();
return redirect('/viewAsset') ->with('info', 'New Asset Saved Successfully!');
}
}
manufacturer.blade.php
<select name="manufacturer_id">
<option>Select a Manufacturer</option>
@foreach( $manufacturer as $manufacturers )
<option value=" <?php echo $manufacturers->manufacturer_id; ?>" > <?php echo $manufacturer->manufacturer?> </option>
@endforeach
</select>
когда я выполняю свой проект — он работает просто отлично, я вижу выпадающий список. Но если я включу мой manufacturer.blade.php
в виде:
@include('forms.manufacturer')
Я получаю ошибку
Undefined variable: manufacturer.
Как я могу исправить ошибку? Моя версия Laravel — 5.4.
Вы проходите $manufacturer
как $data
на ваш взгляд.
Обновите его, чтобы правильно передать переменную с именем $manufacturer
,
return view('manufacturer')->with('manufacturer', $Manufacturer);
Или используйте компактный для более чистого подхода:
return view('manufacturer', compact('manufacturer'));
Других решений пока нет …