Laravel - Le contrôleur obtient la valeur de sélection de la vue
P粉729436537
P粉729436537 2024-03-26 23:25:12
0
2
3619

Je crée un babillard en utilisant Laravel et je souhaite que les articles du babillard soient affichés en sélectionnant une année (par exemple, lorsque 2022 est sélectionné, seuls les articles publiés en 2022 seront affichés). J'ai fait référence à beaucoup de questions similaires et au site officiel de Laravel mais cela ne s'est pas bien passé, voici ce que j'ai maintenant :

Sélectionnez "blade.php":

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

index() dans "Controller.php":

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

Quelqu'un peut-il me dire quel est le problème ? Merci!

Quelques sites internet référencés :

Laravel - Requête HTTP

Discussion Laravel - Comment obtenir de la valeur à partir de la boîte de sélection

Transmettre la valeur sélectionnée de la vue au contrôleur dans Laravel

Code complet du contrôleur


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

répondre à tous(2)
P粉253800312

Merci à tous pour vos réponses, tout le monde m'a donné des idées différentes et m'a aidé à trouver la réponse. Mon code est en cours d'exécution :


routage-web.php

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

blade.php


Contrôleur

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

Je pense qu'il vous manque certaines dépendances en passant la méthode index... c'est pourquoi vous obtenez l'erreur de serveur 500

Dans votre méthode d'indexation, vous ne transmettez pas la variable $request..Je pense que le code devrait être comme ceci

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

et ajoutez cette ligne en haut de votre fichier contrôleur

use Illuminate\Http\Request;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!