Heim > Fragen und Antworten > Hauptteil
Ich erstelle mit Laravel ein Schwarzes Brett und möchte, dass die Artikel auf dem Schwarzen Brett angezeigt werden, indem ich ein Jahr auswähle (wenn beispielsweise 2022 ausgewählt ist, werden nur Artikel angezeigt, die im Jahr 2022 veröffentlicht wurden). Ich habe auf viele ähnliche Fragen und die offizielle Website von Laravel verwiesen, aber es ging nicht gut, das habe ich jetzt bekommen:
Wählen Sie „blade.php“:
<select name="article_year" onchange=""> @foreach ($year as $item) <option value="{{ $item->id}}">{{ $item->name}}</option> @endforeach </select>
index() in „Controller.php“:
$article_year = $request->get('article_year'); $data['news'] = (new Article())->where('user_year', $article_year)->get();
Kann mir jemand sagen, wo das Problem liegt? Danke!
Einige Websites, auf die ich verwiesen habe:
Laravel – HTTP-Anfrage
Laravel-Diskussion – So erhalten Sie einen Mehrwert aus der Auswahlbox
Übergeben Sie den ausgewählten Wert von der Ansicht an den Controller in Laravel
Vollständiger Code des Controllers
<?php namespace App\Http\Controllers; use App\Article; use App\Catalog; use App\User; use App\Http\Controllers\Controller; use Request; use App; class HomeController extends Controller { public function __invoke(){} public function index() { $locale = Request::segment(1); $view = 'home'; $article_year = $request->get('article_year'); $data['year'] = (new Catalog())->where('catalog_type_id', 3)->where('is_active', 1)->orderBy('sort_num', 'asc')->get(); $data['news_pin'] = (new Article())->where('is_active', 1)->where('user_year', $article_year)->orderBy('sort_num', 'desc')->get(); $data['news'] = (new Article())->where('is_active', 0)->where('user_year', $article_year)->orderBy('sort_num', 'desc')->get(); return view($view, $data); } }
P粉2538003122024-03-27 22:40:26
感谢大家的回答,每个人都给了我不同的想法并帮助我找到了答案。我的代码正在运行:
路由-web.php
Route::get('/', 'HomeController@index')->name('home'); Route::post('/', 'HomeController@index');
刀片.php
控制器
article_year; $data['year'] = (new Catalog())->where('catalog_type_id', 3)->where('is_active', 1)->orderBy('sort_num', 'asc')->get(); $data['news_pin'] = (new Article())->where('is_active', 1)->where('user_year', $value)->orderBy('sort_num', 'desc')->get(); $data['news'] = (new Article())->where('is_active', 0)->where('user_year', $value)->orderBy('sort_num', 'desc')->get(); return view($view, $data); } }
P粉4642089372024-03-27 14:54:15
我认为您错过了一些传递索引方法的依赖项...这就是您收到 500 服务器错误的原因
在你的索引方法中,你没有传递 $request 变量..我认为代码应该是这样的
public function index(Request $request) { $locale = Request::segment(1); $view = 'home'; $article_year = $request->get('article_year'); $data['year'] = (new Catalog())->where('catalog_type_id', 3)->where('is_active', 1)->orderBy('sort_num', 'asc')->get(); $data['news_pin'] = (new Article())->where('is_active', 1)->where('user_year', $article_year)->orderBy('sort_num', 'desc')->get(); $data['news'] = (new Article())->where('is_active', 0)->where('user_year', $article_year)->orderBy('sort_num', 'desc')->get(); return view($view, $data); }
并将此行添加到控制器文件顶部
use Illuminate\Http\Request;