Laravel - 控制器從視圖中取得選擇值
P粉729436537
P粉729436537 2024-03-26 23:25:12
0
2
3665

我正在使用 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);
    }
}

P粉729436537
P粉729436537

全部回覆(2)
P粉253800312

感謝大家的回答,每個人都給了我不同的想法並幫助我找到了答案。我的程式碼正在運行:


路由-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粉464208937

我認為您錯過了一些傳遞索引方法的依賴項...這就是您收到 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;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!