Как бы я отправил данные в контроллер - PullRequest
0 голосов
/ 09 октября 2018

Я строю форум и пытаюсь реализовать страницу категорий.Страница работает на данный момент, она динамическая, поэтому в ней перечислены все категории, хранящиеся в базе данных.Однако я хочу иметь возможность щелкнуть по категории и перейти на страницу шаблона.С этой страницы шаблона я хочу передать category ID (определенный в базе данных как первичный ключ).Затем будут отображаться все сообщения с соответствующим идентификатором категории.У меня возникают проблемы при передаче этого category ID в шаблон страницы моей категории.

Любая помощь будет чрезвычайно полезна!

(Как категории отображаются в списке:)

@foreach($categories as $row)
    <div id="newscontainer" class="container">
        <?php $categoryid = $row->id; ?>
        <a href="/category"><span id='categoryname'><?= $row->categoryname ?><br></span></a>
        <span id="categorydescription"><?= $row->categorydescription?></span>
    </div>
    <br>
@endforeach

Спасибо!

Ответы [ 4 ]

0 голосов
/ 10 октября 2018

Для тех, у кого такая же проблема: (у меня был момент eureka ...)

Мой forums.blade.php файл (где пользователь выбирает категорию, которую хочет просмотреть:

Здесь он вызывает маршрут категории (где будут отображаться сообщения), а затем устанавливает идентификатор категории в одном URL-адресе. Это будет выглядеть в браузере: www.example.test / category / (ID) (поэтому, когда я запрашиваю в базе данных посты этой категории, он извлекает их).

<a href="/category/{{ $categoryid }}"> <span id='categoryname'><?= $row->categoryname ?><br></span></a>


Мой web.php файл:

Я в основном получил идентификатор из URL, который был передан, когда пользователь нажал на ссылку.

Route::get('/category/{id}', 'CategoriesController@getid');


My CategoriesController.php file:

Здесь я определил функцию, поэтому в web.php она знает, что нужно перейти к функции с атрибутом getid. Как только она нашла правильную функцию, она устанавливает $catidто же значение, что и $id. Затем он возвращается к представлению categorytemplate (это шаблон, для которого требуется идентификатор в первую очередь).для отображения сообщений) с помощью переменной $catid в функции compact.

public function getid($id){
    $catid = $id;
    return view('categorytemplate', compact('catid'));
}

Надеюсь, мое объяснение достаточно ясное для понимания.И я надеюсь, что это может помочь кому-то еще в этом вопросе в будущем!

Еще раз спасибо всем, кто предлагает идеи.

0 голосов
/ 09 октября 2018

Прежде всего определите маршрут в web.php:

web.php:

Route::get('category/{category}','YouController@YourCatFunction')->name('categories.list');

в вашем контроллере:

  public function YourCatFunction(Category $category)
  {
      // here you can return view for post with that category and then display them
     return $category;
  }

, затем, на ваш взгляд:

@foreach($categories as $row)
    <div id="newscontainer" class="container">
        <a href="{{ route('categories.list',$row->id)}}"><span id='categoryname'>{{ $row->categoryname }}<br></span></a>
        <span id="categorydescription">{{ $row->categorydescription }}</span>
    </div>
    <br>
@endforeach
0 голосов
/ 09 октября 2018

Вы также можете попробовать это.

Маршрут web.php

Route::get('category/{categoryid}', ['as'=>'category.show','uses'=>'CategoriesController@show');

Контроллер CategoriesController.php

public function show($categoryid){
    // some of your code.
    $categoryid = DB::table('category')->select('categoryId');
    return view('category.show', compact('categoryId'));
   // don't forget if you have some variables and you want to view it at blade just put it inside the compact 
}

Просмотреть блейд category.show.blade.php

@foreach($categories as $row)
<div id="newscontainer" class="container">
    <a href="{{route('category.show',['categoryid'=>$row->categoryid])}}"><span id='categoryname'>{{ $row->categoryname }}<br></span></a> 
    <span id="categorydescription">{{ $row->categorydescription }}</span>
</div>
@endforeach
0 голосов
/ 09 октября 2018

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

Сначала вы создаете маршрут, подобный этому:

Route::get('category/{category}', 'CategoriesController@show')->name('category.show');

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

public function show(Request $request, Category $category) {
    return view('category.show', compact('category'));
}

Тогда, по вашему мнению, у вас будет что-то вроде этого, где вы перебираете доступные сообщения:

@foreach($category->posts as $post)
// do something
@endforeach

Для вызова маршрута вы можете просто создать эту ссылку:

<a href="{{ route('category.show', ['category' => $id]) }}">Show</a>

Как я вижу, ваше базовое пространство имен равно ULMG, поэтому правильный путь к вашему классу Category будетULMG\Category

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