如何将一部分URL用作Laravel 5.3中的控制器变量

时间:2017-01-31 15:49:49

标签: laravel-5.3

使用Laravel 5.3,我试图动态地将部分网址传递给控制器​​函数,但目前还没有运气。在http://127.0.0.1:8000页面上点击链接后,网址将变为http://127.0.0.1:8000/politics。如何将政治部分传递给我的控制器功能?以下是我的

web.php路由文件

Route::get('/{$category}', 'PostController@category');

PostController.php文件

public function category($category)
{
    $tag = $category;

    $posts = Post::where('tag', '=', '{tag}');

    return view('post', compact('posts'));
}

php artisan tinker

Psy Shell v0.8.1 (PHP 5.6.16 ΓÇö cli) by Justin Hileman
>>> $tag = 'politics'
=> "politics"
>>> $post = App\Post::where('tag', '=', '{tag}')->get();
=> Illuminate\Database\Eloquent\Collection {#671
     all: [],
   }
>>>

1 个答案:

答案 0 :(得分:1)

因此,在查看代码并在本地放置一个小型演示之后,只有一个次要原因导致失败的原因。

{varName}个变量已被识别为变量,因此您无需像当前那样将其定义为$varName{$category}

以下代码应该为您提供一个工作示例:

创建一个名为DemoController的控制器。

在此文件中输入以下内容:

public function demo($category) 
{
    dd($category); 
}

routes\web.php路径文件中添加以下行"

Route::get('/mena/{category}', 'DemoController@demo');

现在,当您转到www.website.com/mena/politics时,您会看到它在屏幕上显示politics