我正在使用 Laravel 制作一个公告板,我希望公告板上的文章可以通过选择年份来显示(例如,选择 2022 年时,仅显示 2022 年发布的文章)。我参考了很多类似的问题和Laravel的官方网站,但进展不顺利,这是我现在得到的:
选择“blade.php”:
<select name="article_year" onchange="">
    @foreach ($year as $item)
        <option value="{{ $item->id}}">{{ $item->name}}</option>
    @endforeach
</select>
“Controller.php”中的index():
$article_year = $request->get('article_year');
$data['news'] = (new Article())->where('user_year', $article_year)->get();
谁能告诉我问题出在哪里?谢谢!
我参考的一些网站:
Laravel - HTTP 请求
Laravel 讨论 - 如何从选择框获取值
在 Laravel 中将选择的值从视图传递到控制器
控制器的完整代码
<?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);
    }
}            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
感谢大家的回答,每个人都给了我不同的想法并帮助我找到了答案。我的代码正在运行:
路由-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); } }我认为您错过了一些传递索引方法的依赖项...这就是您收到 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); }并将此行添加到控制器文件顶部