Как показать конкретную категорию на основе выбора раскрывающегося списка

У меня есть таблица категорий и таблица клубов, связь между ними

  • Категория имеет много клубов
  • 1 категория может иметь много клубов
  • 1 клуб имеет 1 категорию

Я хочу показать клубы на основе категории, которая будет выбрана в раскрывающемся списке, поэтому другие клубы будут скрыты. См. снимок экрана для большего понимания Как показать конкретную категорию на основе выбора раскрывающегося списка

  1. Мой контроллер (у меня нет проблем с выводом имен категорий в раскрывающийся список):
    public function club()
    {
        $categories_name = Category::pluck('category_name','id'); 
        $user_id = auth()->user()->id;
        $user = User::find($user_id);
        $data = array(
            'user_clubs' => $user->clubs,
            'categories_name' => $categories_name
        );
        return view('pages.dashboard.club_dashboard')->with($data);
    }
  1. Мой вид
<div class = "form-group">
        <strong>{{Form::label('categories_name', 'Select Category')}}</strong>
        {{Form::select('categories_name', $categories_name, null, ['class' => 'form-control'], array('name'=>'categories_name[]'))}}
</div>

@if (count($user_clubs)>0)
<table class = "table table-striped">
    <tr>

        <th><strong>Club Name</strong></th>
        <th></th>
        <th></th>
    </tr>
    @foreach ($user_clubs as $club)
    <tr>
        <th>{{$club->club_name}} | {{$club->category->category_name}} </th>
        <td><a href = "/clubs-soc/lists/{{$club->id}}/edit" class = "btn btn-warning">Edit</a></td>
        <td>
            {!!Form::open(['action' => ['ClubsController@destroy', $club->id], 'method' => 'POST', 'class' => 'float-right'])!!} 
            {{Form::hidden('_method','DELETE')}} 
                {{Form::submit('Delete', ['class' => 'btn btn-danger'])}} 
            {!!Form::close()!!}
        </td>
    </tr>
    @endforeach
</table>
@else
<p>You Have No posts</p>
@endif

3. Модель категории

class Category extends Model
{
    public function user(){
        return $this->belongsTo('App\User');
    }

    public function clubs(){
        return $this->hasMany('App\Club');
    }
}

4.Клубная модель

class Club extends Model
{
    public function user(){
        return $this->belongsTo('App\User');
    }

    public function category(){
        return $this->belongsTo('App\Category');
    }
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js>">
    onchange alert($("#categories_name").length);
    console.info($("#categories_name").length);  
    $(document).ready(function(){
        $("#categories_name").on("change", function(){
            var category_id = $(this).val();
            $("table tr").each(function(index){
                if (index != 0) {
                    $row = $(this);
                    if ($row.attr('id')!=category_id) {
                        $row.hide();
                    }
                    else {
                        $row.show();
                    }
                }
            });
        });
    });​
</script>

Я написал этот скрипт из ответа ниже, он все еще не работает, пожалуйста, помогите мне найти, где я допустил ошибку? куда мне поставить скрипт?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

//добавляем идентификатор категории к вашему tr

@foreach ($user_clubs as $club)
    <tr id = "{{$club)->category->id}}">
        //Rest of your code
    </tr>
@endforeach

//Ваш jquery

$("#categories_name").on("change", function() {
    var category_id = $(this).val();

    $("table tr").each(function(index) {
        if (index != 0) {

            $row = $(this);



            if ($row.attr('id')!=category_id) {
                $row.hide();
            }
            else {
                $row.show();
            }
        }
    });
});​

Я пробовал, все еще не работает, не могли бы вы указать, где и как я должен разместить скрипт

Nurdaulet Shamilov 10.04.2019 05:19

поместите свой javascript в функцию document.ready, поэтому всякий раз, когда вы меняете категорию из раскрывающегося списка категорий, это событие будет вызывать, отображать и скрывать строки соответственно.

Osama Alvi 10.04.2019 07:54

событие onchange работает или нет? или вообще не звонил?

Osama Alvi 10.04.2019 09:11

пожалуйста, проверьте код выше, я обновил его скриптом

Nurdaulet Shamilov 10.04.2019 09:43

Я спросил, вы вызывали событие onchange или нет? попробуйте добавить console.info или оповещение внутри функции onchange и проверьте, работает ли он или нет.

Osama Alvi 10.04.2019 10:41

также вы добавили идентификатор в свой tr или нет?

Osama Alvi 10.04.2019 10:42

Я добавил оповещение и console.info внутри onchange, ничего не отображается, значит, функция не вызывается? Я добавил ''id' внутрь tr, что мне делать, чтобы он вызвал изменение, я понятия не имею, почему он не вызывается, пожалуйста, сэр, помогите мне, потому что это мой FYP, и я здесь, спасибо

Nurdaulet Shamilov 10.04.2019 11:03

поместите это на готовый выше onchange alert($("#categories_name").length); console.info($("#categories_name").length);

Osama Alvi 10.04.2019 11:13

Давайте продолжить обсуждение в чате.

Nurdaulet Shamilov 10.04.2019 11:31

Другие вопросы по теме