Maison > Questions et réponses > le corps du texte
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粉2538003122024-03-27 22:40:26
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粉4642089372024-03-27 14:54:15
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;