【问题标题】:Laravel 5.2 filter with dropdownlist带有下拉列表的 Laravel 5.2 过滤器
【发布时间】:2016-07-12 06:31:54
【问题描述】:

我想做下拉列表过滤。

我有一个网页,上面显示了一些带有标题和类别的帖子。

该页面在nav.blade.php 中有一个下拉菜单。我从类别表中动态生成下拉列表。但是当我选择一个下拉项目(例如类别名称)时,我希望页面只显示该类别的帖子。我还创建了 Category 和 Posts 模型并设置了关系。我可以在我的主页上看到所有帖子,但无法使用下拉列表过滤内容。

我做错了什么?我该如何解决这个问题?

我的导航刀片:

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
       aria-haspopup="true" aria-expanded="false">Dropdown
        <span class="caret"></span></a>
    <ul class="dropdown-menu">
        <li>@foreach($categories as $category)
                <a href="{{URL::route('home',$category->id)}}">
                    <option value="{{$category->id}}">{{ $category->name }}</option>
                </a>
            @endforeach
        </li>
    </ul>
</li>

【问题讨论】:

  • 我已经更正了您的问题,请阅读并确认,因为您之前的表述无法理解?
  • 好的,非常感谢
  • 没问题,你应该告诉我以下解决方案是有效的,因为我花了一些时间为你做 :) 祝你好运
  • 我知道,但我只是想通了 :( 对不起,伙计。我以为还没开始 :( 真的很抱歉
  • 没问题,祝你好运

标签: php html laravel laravel-5.2


【解决方案1】:

这会让你开始:

假设你有这样的路线:

Route::get('/{category_id}', ['as'=>'home', 'uses'=>'PostController@show']);

PostController@show 方法中:

public function show($category_id)
{
    $categories = Category::all();
    $selected_category = Category::with('posts')->where('id', $category_id)->first();
    $posts = $selected_category->posts;

    return redirect()->back()->with(compact('posts', 'categories'));
}

您可以更改重定向位置。

【讨论】:

  • 我遇到了这样的错误:Builder.php 第 2177 行中的 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::posts()
  • 您是否在 Post 和 Category 模型中设置了关系?
  • 对于类别模型: public function posts(){ return $this->hasMany('App\Models\Post');对于用户模型: public function category(){ return $this->belongsTo('App\Models\Category'); }
  • 也适用于 Post 模型: public function category(){ return $this->belongsTo('App\Models\Category'); }
  • 您的关系运作良好吗?您是否尝试过急切加载?
猜你喜欢
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多