【问题标题】:Laravel redirect route with id variable won't work带有 id 变量的 Laravel 重定向路由不起作用
【发布时间】:2016-04-21 15:00:40
【问题描述】:

我已经对我的 laravel 4.2 网站进行了更新,该功能可以正常工作。它使用正确的信息更新数据库中的表,但是当我想重定向到与我来自相同的视图时,我遇到了问题。

网址显示:

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

当它应该说:

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'=>'PageController@index'));

Route::post('/admin/page/{pageID}', array('as'=>'page', 'uses'=>'PageController@update'));

如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: php laravel laravel-4 laravel-routing


    【解决方案1】:

    page 路由需要一个名为{pageID} 的参数,重定向时需要传递:

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

    您可以在Laravel Redirects Documentation 中了解更多信息。

    【讨论】:

    • 顺便说一句,您知道如何在我的视图中显示“成功”变量,如下所示:with('succes', 'Du har sendt en besked');
    • 该变量值被闪现到会话中,因此要访问它,您可以使用Session::get('success')。如果您需要在显示变量之前检查变量是否已通过,您可以使用类似这样的条件:@if (Session::has('success')) {{ Session::get('success') }} @endif。您可以查看Returning A Redirect With Flash Data 部分以及Session Docs 了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 2018-12-27
    • 2020-11-13
    • 2015-08-10
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2017-09-17
    相关资源
    最近更新 更多