如何将数据发送到控制器

时间:2018-10-09 14:40:09

标签: php laravel

我正在建立一个论坛,并试图实现一个类别页面。该页面目前正在运行,它是动态的,因此它列出了存储在数据库中的所有类别。但是,我希望能够单击一个类别并转到模板页面。我想从此模板页面传递一个docker run -it \ --env="DISPLAY" \ --env="QT_X11_NO_MITSHM=1" \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ osrf/ros:indigo-desktop-full \ rqt export containerId=$(docker ps -l -q) (在数据库中定义为主键)。然后将显示所有具有匹配类别ID的帖子。我无法将此category ID传递到我的类别页面模板。

任何帮助将不胜感激!

(类别在列表中的显示方式:)

category ID

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以创建一个网络路由,该路由将处理类别调用并返回具有该类别及其帖子的视图。

首先,您要创建一条像这样的路线:

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

答案 1 :(得分:2)

首先在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

答案 2 :(得分:1)

您也可以尝试这个。

路线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

答案 3 :(得分:0)

对于其他遇到相同问题的人: (我有一个尤里卡的时刻...)

我的forums.blade.php文件(用户在其中选择要查看的类别:

在这里,它调用类别路由(将在其中显示帖子),然后在一个URL中设置类别ID。在浏览器中将如下所示:www.example.test / category /(ID)(因此,当我在数据库中查询该类别下的帖子时,它将提取它们)。

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


我的web.php文件:

我基本上是从用户单击链接时通过的URL中获取ID的。

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


我的CategoriesController.php文件:

这里我定义了一个函数,因此在web.php中它知道转到属性为getid的函数。找到正确的功能后,便将$catid设置为与$id相同的值。然后,它会在categorytemplate函数中返回$catid变量,返回到compact视图(这是首先需要ID才能显示帖子的模板)。

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

我希望我的解释足够清楚可以理解。我希望这可以在将来帮助其他人解决这个问题!

再次感谢其他提出建议的人。