Laravel – Controller erhält Auswahlwert aus der Ansicht
P粉729436537
P粉729436537 2024-03-26 23:25:12
0
2
3719

Ich erstelle mit Laravel ein Schwarzes Brett und möchte, dass die Artikel auf dem Schwarzen Brett angezeigt werden, indem ich ein Jahr auswähle (wenn beispielsweise 2022 ausgewählt ist, werden nur Artikel angezeigt, die im Jahr 2022 veröffentlicht wurden). Ich habe auf viele ähnliche Fragen und die offizielle Website von Laravel verwiesen, aber es ging nicht gut, das habe ich jetzt bekommen:

Wählen Sie „blade.php“:

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

index() in „Controller.php“:

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

Kann mir jemand sagen, wo das Problem liegt? Danke!

Einige Websites, auf die ich verwiesen habe:

Laravel – HTTP-Anfrage

Laravel-Diskussion – So erhalten Sie einen Mehrwert aus der Auswahlbox

Übergeben Sie den ausgewählten Wert von der Ansicht an den Controller in Laravel

Vollständiger Code des Controllers


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

Antworte allen(2)
P粉253800312

感谢大家的回答,每个人都给了我不同的想法并帮助我找到了答案。我的代码正在运行:


路由-web.php

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

刀片.php


控制器

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

我认为您错过了一些传递索引方法的依赖项...这就是您收到 500 服务器错误的原因

在你的索引方法中,你没有传递 $request 变量..我认为代码应该是这样的

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

并将此行添加到控制器文件顶部

use Illuminate\Http\Request;
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage