2016-01-15 2 views
3

Я сделал функцию обновления для моего веб-сайта laravel 4.2, который работает. Он обновляет таблицу в базе данных с правильной информацией, но когда я хочу перенаправить на тот же взгляд, что и я, я получаю проблему.Маршрут перенаправления Laravel с переменной id не работает

URL-адрес показывает:

http://localhost:8000/admin/page/%7BpageID%7D

когда он schould сказать:

http://localhost:8000/admin/page/1

Вот ссылка на изображение показывает ошибку в моем браузере:

http://i.imgur.com/ggO5ELg.png

это с моей точки зрения (admin.pages)

@section('content') 

    <div class='box box-info'> 

     <form method="post" action="/admin/page/{{$page->id}}"> 
    <div class='box-header'> 
      <div class='box-body pad'> 
       <input type="text" name="title" value="{{$page->title}}" class="form-control"> 
      </div> 
    </div> 
     <div class='box-body pad'> 
      <textarea id="editor1" name="text" rows="2" cols="80"> 
       {{ $page->text }} 
      </textarea> 
      <br> 
      <input type="submit" class="btn btn-primary" value="Opdater"> 
     </div> 
     </form> 

    </div> 

@stop 

Это из моего контроллера (PageController), где я есть редирект функции обновления.

<?php 

class PageController extends BaseController { 

    public function index($pageID) 
    { 
     $data['pageID'] = $pageID; 
     $page = Page::find($pageID); 
     return View::make('admin.pages', $data) 
      ->with(compact('page')); 
    } 

    public function update($pageID) 
    { 
     DB::table('pages') 
      ->where('id', $pageID) 
      ->update(array(
       'title' => Input::get('title'), 
       'text' => Input::get('text'))); 

     return Redirect::route('page')->with('succes', 'Du har sendt en besked'); 
    } 

} 

Это два пути, которые я использую в этом случае

Route::get('/admin/page/{pageID}', array('as'=>'page', 'uses'=>'[email protected]')); 

Route::post('/admin/page/{pageID}', array('as'=>'page', 'uses'=>'[email protected]')); 

Если вам нужно больше информации, просто дайте мне знать.

ответ

3

page маршрут требует параметр с именем {pageID}, и вам нужно передать, что при перенаправлении:

return Redirect::route('page', ['pageID' => $pageID])->with('succes', 'Du har sendt en besked'); 

Вы можете прочитать об этом в Laravel Redirects Documentation.

+0

BTW Вы знаете, как показать переменную «succes» в моем представлении, как показано здесь: с ('succes', 'Du har sendt en besked'); –

+0

Это значение переменной мигает к сеансу, поэтому для доступа к ней вы можете использовать 'Session :: get ('success')'. Если вам нужно проверить, прошла ли переменная перед ее отображением, вы можете иметь условие примерно так: '@if (Session :: has ('success')) {{Session :: get ('success')}} @ endif'. Вы можете просмотреть раздел [Возврат перенаправления с данными Flash] (https://laravel.com/docs/4.2/responses#redirects), а также [Документы сеанса] (https://laravel.com/docs/ 4.2/сеанс) для получения дополнительной информации. – Bogdan

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