Rumah  >  Soal Jawab  >  teks badan

Laravel - Pengawal mendapat nilai pilihan daripada paparan

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粉729436537P粉729436537179 hari yang lalu3622

membalas semua(2)saya akan balas

  • P粉253800312

    P粉2538003122024-03-27 22:40:26

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

    balas
    0
  • P粉464208937

    P粉4642089372024-03-27 14:54:15

    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;

    balas
    0
  • Batalbalas