2017-01-31 1 views
1

Работа с Laravel 5.3, я пытаюсь передать часть моего url в функцию контроллера динамически, пока не повезло. Когда ссылка нажимается на странице http://127.0.0.1:8000, URL-адрес становится http://127.0.0.1:8000/politics. Как я могу передать часть политики в функцию контроллера? Ниже то, что у меня есть в моихКак часть URL-адреса может использоваться как переменная контроллера в Laravel 5.3

web.php маршрутов файл

Route::get('/{$category}', '[email protected]'); 

PostController.php файл

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

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

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

PHP ремесленник ремесленник

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: [], 
    } 
>>> 
+0

Просто для отладки, делает 'Post :: where ('tag', '=', 'policy');' return anyth ING? –

+0

Да, он возвращает сообщение с этим тегом, как ожидалось – Mena

+0

Так вы можете делать 'Post :: where ('tag', '=', $ tag)'? –

ответ

1

Таким образом, после рассмотрения кода и помещая небольшую демонстрационную версию вместе локально, есть только один незначительная причина, почему это не удается.

{varName} переменные уже признаны в качестве переменной, поэтому вам не нужно определить его как $varName, как вы в настоящее время ({$category})

Следующий код должен дать вам рабочий пример:

Создать контроллер называется DemoController.

В этом файле поместить следующее:

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

Внутри файла routes\web.php маршрута добавить следующую строку»

Route::get('/mena/{category}', '[email protected]');

Теперь, когда вы идете в www.website.com/mena/politics вы должны увидеть его распечатать politics на экран.

+0

Спасибо, миллион за ваше время и терпение. Код исправлен и разрешен вопрос – Mena

+0

Абсолютно в любое время @Mena –