Как загрузить два разных представления в одном файле, используя одну функцию в laravel - PullRequest
0 голосов
/ 12 января 2019

У меня есть вид, который имеет форму для выбора параметров поиска, таких как поиск по категории, я загружаю это с именем функции search_by_category(). Эта функция получает категории и передает их представлению, чтобы представление могло заполнять все категории в раскрывающемся списке. Эта форма перейдет к новой функции для отправки, и эта функция получит запись в соответствии с категорией, но я потеряю форму поиска в этой новой функции, как я могу иметь две вместе в одном представлении.

КОД:

public function select_by_category()
{
   $a = getcategories();
   return view('show_categories_and_form', $a);
}

public function get_form_record(Request $request)
{
   $a = $request->input('category_id');
   $b = get_record_as_per_category($a);

   return view('show_categories_and_form', $b);
}

Если я загружу view('show_categories_and_form', $b), он не будет отображать категории, или мне придется снова получать категории в этой функции?

   @include('header_file')


  <form method="post" action="{{ URL::to('/get_form_record') }}">
    <!-- <div class="form-group">             
          <label for="name">Search By Link:</label>
          <input type="text" class="form-control" name="link"/>
      </div> -->
      <div class="form-group">
      @csrf
          <label for="price">Search By Category:</label>
          <select class="form-control" name="category">
          <option value="">Select Category</option>
          @foreach($getCategories as $getcats)
          <option value="{{$getcats->id}}">{{$getcats->category_name}} </option>
          @endforeach
          </select>
      </div>         

      <button type="submit" class="btn btn-primary">Search</button>
  </form>

        @include('footer_file')

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Есть несколько способов сделать это так, как вы этого хотите.

Вы можете перезагрузить всю форму, что будет означать перезагрузку категорий каждый раз вместе с get_record_as_per_category() в той же функции. Это даст вам это с одной точки зрения, и это простейшая концепция.

Вы также можете загрузить каждую запись (все категории) и отправить ее на страницу с самого начала вместе со всеми категориями, такими как вы, уже есть в приведенном выше примере кода. Затем, когда пользователь меняет категорию, вы можете использовать JavaScript / jQuery, чтобы скрыть все неправильные записи и показать только правильные записи для выбранной категории.

Я думаю, что самым близким подходом к тому, что вы хотите, было бы иметь еще один файл 'include' (как вы сделали со своим верхним и нижним колонтитулами). Таким образом, верхняя часть останется такой же, как у вас сейчас - той же формы. Затем, между вашей формой категории и нижним колонтитулом, включите эту новую часть ... назовем ее selected_records. Когда пользователь меняет категории, вам нужно только перезагрузить часть selected_records формы с помощью ajax-вызова.

Это было бы так:

@include('header_file')

<form method="post" action="{{ URL::to('/get_form_record') }}">
    //  Your code as above
</form>

<div id=chosen_guts>
   @include('chosen_records')
</div>

@include('footer_file')

<script>
  //pseudo code
  ajax{
    call to get_form_record();
    success(successHtml):
      $("#chosen_guts").html(successHtml); 
  }
</script>

Затем, поскольку вы создали представление JUST для выбранных записей, вы можете легко получить только это представление с правильными записями, чтобы вернуться к вызову ajax:

public function get_form_record(Request $request)
{
   $a = $request->input('category_id');
   $b = get_record_as_per_category($a);

   // for the ajax call, we just return the guts, not the form
   return view('chosen_records', $b);
}

Для самого первого просмотра при первом отображении страницы вам нужно решить, хотите ли вы включить набор записей для категории «по умолчанию» для отображения в разделе selected_records. Если это так, в исходную функцию select_by_category() вам нужно включить вызов для получения этих записей:

$b = get_record_as_per_category($someDefaultCategory);

Много вариантов, в зависимости от того, что вам удобно.

НТН

0 голосов
/ 12 января 2019

попробуйте сначала проверить $ b. попробуйте вернуть его, чтобы увидеть результат.

если он пуст, то ошибка от get_record_as_per_category ();

если он не пустой, то ошибка в результате $ b. я предполагаю, что $ a содержит объекты, а $ b содержит массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...