#laravel
#laravel
Вопрос:
Привет, ребята, у меня проблема в моей неопределенной переменной кода: reports_categories. Я пытаюсь создать выпадающий список с названием категорий, которые они есть в моей базе данных. Вот что я сделал:
{!! Form::open(array('route' => 'reports.create','role' => 'form', 'enctype' => 'multipart/form-data')) !!}
{{csrf_field()}}
{{method_field('PUT')}}
<div class="col-md-4 col-sm-2 pull-right"style="margin-top: 50px">
<div class="select-style input-round med-input shop-shorting-full">
<select name="category_id" id="" class="form-control">
<option value="">Select Category</option>
@foreach($reports_categories as $category)
<option
value="{{$category->id}}"
@if($category->id === $reports->category_id)
selected
@endif
>
{{$category->name}}
</option>
@endforeach
</select>
</div>
</div>
{!! Form::close() !!}
И вот мой ReportsController:
public function index(){
//Show all created reports
$reports = Reports::orderBy('created_at', 'desc')->paginate(15);
return view('reports.index', ['reports'=>compact('reports')])->with(['reports', $reports]);
}
public function create()
{
$reports = 'reports';
return view('reports.create',['reports'=>$reports]);
}
public function store(Request $request)
{
//Validate fields
$this->validate($request, [
'title' => 'required',
'description' => 'required',
'address' => 'required'
]);
//Create Report
$reports = new Reports;
$reports->title = $request->input('title');
$reports->description = $request->input('description');
$reports->address = $request->input('address');
$reports->reports_categories_id = auth()-
>reports_categories()->id;
$reports->user_id = auth()->user()->id;
$reports->save();
return redirect('/reports')->with('success', 'ReportCreated');
}
public function show($id)
{
$reports = Reports::find($id);
$reports_categories = DB::table('reports_categories')->where('reports_categories_id', $id)->get();
return view('reports.show', ['report'=>$reports, 'reports_categories'=>$reports_categories]);
}
Пожалуйста, если вы знаете, в чем проблема, или у вас есть какие-либо предложения, дайте мне знать.
Если вам нужна более подробная информация, сообщите мне, и я предоставлю дополнительную информацию.
Комментарии:
1. Пожалуйста, исправьте return view (‘reports.show’, [‘report’=>$reports, ‘reports_categories’ =>$categories]); это должно быть ‘reports_categories’ =>$reports_categories
2. Какой у вас файл с именем блейда?
3. Имя блейда create.blade.php
4. @mightyteja я это исправил, но все же
Ответ №1:
Если это связано с вашей функцией ‘show’, то вы передаете переменную с именем $categories вместо $reports_categories, которую вы использовали для запроса к БД здесь:
public function show($id)
{
$reports = Reports::find($id);
$reports_categories = DB::table('reports_categories')->where('reports_categories_id', $id)->get();
return view('reports.show', ['report'=>$reports, 'reports_categories'=>$categories]);
}
Измените переменную, которую вы возвращаете в представление, на $reports_categories .
Если эта форма находится в вашем представлении функции «создать», то вы вообще не передаете ее на эту страницу. Если вы используете форму создания, которая требует этого, может быть, в этом проблема? Трудно понять, не зная, на какой странице находится эта форма.
Комментарии:
1. Да, я изменил $categories на $ reports_categories, но я все равно получаю ту же ошибку. Не могли бы вы еще раз объяснить вторую часть своего ответа?