2016-12-15 6 views
0

Я хотел бы начать с извинения за новый вопрос.Laravel redirect() to не генерирует правильный URL-адрес

Я в процессе создания простого контроллера CRUD на Laravel.

Мой метод создания выглядит следующим образом:

public function create(Request $request) 
{ 
    $dummy = new Dummy(); 
    $dummy->title = $request->title; 
    $dummy->content = $request->dummy_content; 
    $dummy->created_at = new \DateTime(); 
    $dummy->updated_at = new \DateTime(); 
    $dummy->save(); 

    return redirect() 
     ->route('index/view/', ['id' => $dummy->id]) 
     ->with('message', 'Dummy created successfully'); 
} 

мой метод вид:

public function view($id) 
{ 

    $dummy = Dummy::find($id); 

    return view('index/view', [ 
     'dummy' => $dummy 
    ]); 
} 

мои соответствующие маршруты:

Route::get('index/view/{id}', '[email protected]'); 
Route::post('index/create', '[email protected]'); 

и моя форма:

<form action="create" method="post"> 
    {{ csrf_field() }} 
    <div class="form-group"> 
     <label for="title">Title</label> 
     <input type="text" name="title" class="form-control"> 
    </div> 
    <div class="form-group"> 
     <label for="content">Content</label> 
     <textarea name="dummy_content" cols="80" rows="5" class="form-control"></textarea> 
    </div> 
    <button type="submit" class="btn btn-default btn-sm">Submit</button> 
</form> 

Когда я представить мою форму, я получаю следующее исключение:

InvalidArgumentException в UrlGenerator.php линии 314: Route [индекс/вид /] не определено.

Я застрял здесь довольно долгое время, и я до сих пор не могу понять, почему я не создаю свой маршрут должным образом.

Что мне не хватает?

ответ

0

Вы пытаетесь вызвать маршрут, когда вместо этого вы должны вызвать контроллер. Это будет делать трюк

return redirect()->action('[email protected]', ['id' => $id])->with($stuff); 

Кроме того, я предлагаю вам определить псевдонимы маршрутов, так что вы могли бы сделать что-то вроде

В контроллере:

return Redirect::route('route_alias', ['id' => $id])->with($stuff); 

В маршрутах:

Route::get('/index/view/{id}', [ 
     'as' => 'route_alias', 
     'uses' => '[email protected]' 
    ]); 
+0

большое спасибо! – sherbastian