2017-01-25 2 views
0

Я не могу сделать этот маршрут работаетNotFoundHttpException в RouteCollection.php линии 161 - Laravel 5,2

routes.php:

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

HomeController.php

public function category(Request $request, $category_name, $category_id) 
{ 

    $listProject = $this->project->getProjectsFromCategory($category_id); 

    return view('category', [ 
     'projects' => $listProject, 
     ]); 
} 

вид

<div class="col-md-12"> 
     @foreach ($categories as $key => $cat) 
     <a href="home/category/{!! $cat->id !!}"> {{ $cat->name }} </a> 
     @endforeach 
    </div> 

url in bro Wser

http://localhost:8888/ko/public/home/category/6 

и я получаю NotFoundHttpException в RouteCollection.php линии 161

Кто-нибудь увидеть что-то не так?

У меня есть другой маршрут, который работает

Route::get('/home/project/{project_id}','[email protected]'); 

Спасибо за помощь

здесь больше кода

routes.php

Route::auth(); 

Route::get('/', '[email protected]'); 
Route::get('/home', '[email protected]'); 

Route::get('/home/project/{project_id}','[email protected]'); 

Route::post('/home/create/addProject', '[email protected]'); 
Route::get('/home/create', '[email protected]'); 

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

HomeController.php

class HomeController extends Controller 
{ 
/** 
* Create a new controller instance. 
* 
* @return void 
*/ 
public function __construct(ProjectRepository $project, UserRepository $user, CategoryRepository $category) 
{ 
    //$this->middleware('auth'); 
    $this->project = $project; 
    $this->user = $user; 
    $this->category = $category; 
} 

/** 
* Show the application dashboard. 
* 
* @return \Illuminate\Http\Response 
*/ 
public function index(Request $request) 
{ 

    $listProject = $this->project->getAllProjects(); 
    $categories = $this->category->getAllCategories(); 

    foreach($listProject as $key => $project){ 
     // get creator of project 
     $user[$key] = $this->user->getCreator($project->creator_id); 

     // get category of project 
     $category[$key] = $this->category->getCategory($project->category_id); 
    } 

    return view('home', [ 
     'projects' => $listProject, 
     'user' => $user, 
     'category' => $category, 
     'categories' => $categories 
     ]); 
} 

public function category(Request $request, $category_id) 
{ 

    $listProject = $this->project->getProjectsFromCategory($category_id); 

    return view('category', [ 
     'projects' => $listProject, 
     ]); 
} 

}

вид

@extends('layouts.app') 

@section('content') 
<div class="container-fluid"> 
<div class="row"> 
    @foreach ($projects as $key => $project) 
    <div class="col-md-4" style='margin-bottom:20px;'> 
     <div class="border" style="border:1px solid #e7e7e7; padding:15px;"> 
      ID : {{ $project->id }} <br> 
      TITLE : {{ $project->title }} <br> 
      CATEGORY : {{ $category[$key]->name }} <br> 
      CREATOR : {{ $user[$key]->name }} <br> <br> 
      DETAILS : <a href="home/project/{{ $project->id }}">See project</a> 
     </div> 
    </div> 
    @endforeach 
</div> 

<div class="row"> 
    <div class="col-md-12"> 
     @foreach ($categories as $key => $cat) 
     <a href="home/category/{{ $cat->id }}"> {{ $cat->name }} </a> 
     @endforeach 
    </div> 
</div> 
</div> 
@endsection 
+0

Попробуйте удалить '$' от штат {Route :: get ('/ home/category/{$ category_id}', 'HomeController @ category'); 'в маршрутах. Измените его на 'Route :: get ('/ home/category/{category_id}', 'HomeController @ category');' – linuxartisan

+0

, если вы замените 'Route :: get ('/ home/category/{category_id}', ' HomeController @ category '); 'и получить url' http: // localhost: 8888/ko/public/home/category/6', вы не получите эту ошибку NotFoundHttpException в RouteCollection.php.И у вас нет переменной '$ category', определенной в методе' category() 'в контроллере. –

+0

Спасибо! Ошибка заключалась в том, что linuxartisan & Sanzeeb указал. Простой $, заставлял меня бороться часами .. lol .. –

ответ

0

Ваш контроллер неправильно. Вы отправляете контроллеру с маршрута только 1 параметр ($category_id). Но примите еще один параметр: $category_name в вашем контроллере.

Снятие $category_name с контроллера устранит ошибку.

Вам нужно просто определить только параметры маршрута в вашем контроллере. /category не является параметром.

Documentation

Также есть неправильный код в файле лезвия:

Заменить

<a href="home/category/{!! $cat->id !!}"> {{ $cat->name }} </a> 

С

<a href='{{url("home/category/$cat->id")}}'> {{ $cat->name }} </a> 
+0

спасибо за внимание. Я удалил $ category_name из контроллера, но я все равно получаю NotFoundHttpException в строке RouteCollection.php 161 –

+0

Пожалуйста, проверьте мое обновление – Rashad

+0

Или просто удалите восклицательные знаки следующим образом: ' {{ $cat->name }}' – EddyTheDove

Смежные вопросы