Heim  >  Fragen und Antworten  >  Hauptteil

Laravel – Controller erhält Auswahlwert aus der Ansicht

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粉729436537P粉729436537229 Tage vor3667

Antworte allen(2)Ich werde antworten

  • P粉253800312

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

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


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

    Antwort
    0
  • P粉464208937

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

    我认为您错过了一些传递索引方法的依赖项...这就是您收到 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;

    Antwort
    0
  • StornierenAntwort