Laravel - Pengawal mendapat nilai pilihan daripada paparan
P粉729436537
P粉729436537 2024-03-26 23:25:12
0
2
3720

Saya sedang membuat papan buletin menggunakan Laravel, dan saya mahu artikel di papan buletin dipaparkan dengan memilih tahun (contohnya, apabila 2022 dipilih, hanya artikel yang diterbitkan pada 2022 akan dipaparkan). Saya merujuk kepada banyak soalan yang serupa dan laman web rasmi Laravel tetapi ia tidak berjalan lancar, inilah yang saya dapat sekarang:

Pilih "blade.php":

<select name="article_year" onchange="">
    @foreach ($year as $item)
        <option value="{{ $item->id}}">{{ $item->name}}</option>
    @endforeach
</select>

index() dalam "Controller.php":

$article_year = $request->get('article_year');
$data['news'] = (new Article())->where('user_year', $article_year)->get();

Boleh sesiapa beritahu saya apa masalahnya? Terima kasih!

Beberapa laman web yang saya rujuk:

Laravel - Permintaan HTTP

Perbincangan Laravel - Bagaimana untuk mendapatkan nilai dari kotak pilihan

Lulus nilai yang dipilih dari paparan ke pengawal dalam Laravel

Kod lengkap pengawal


<?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

membalas semua(2)
P粉253800312

Terima kasih semua orang atas jawapan anda, semua orang memberi saya idea yang berbeza dan membantu saya mencari jawapannya. Kod saya sedang berjalan:


routing-web.php

Route::get('/', 'HomeController@index')->name('home');
Route::post('/', 'HomeController@index');

blade.php


Pengawal

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

Saya rasa anda kehilangan beberapa kebergantungan yang melepasi kaedah indeks... itulah sebabnya anda mendapat ralat 500 pelayan

Dalam kaedah indeks anda, anda tidak melepasi pembolehubah $request..Saya rasa kodnya sepatutnya seperti ini

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);
    }

dan tambahkan baris ini pada bahagian atas fail pengawal anda

use Illuminate\Http\Request;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan