recherche

Maison  >  Questions et réponses  >  le corps du texte

Laravel - Le contrôleur obtient la valeur de sélection de la vue

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粉729436537P粉729436537241 Il y a quelques jours3686

répondre à tous(2)je répondrai

  • P粉253800312

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

    répondre
    0
  • P粉464208937

    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;

    répondre
    0
  • Annulerrépondre