Php 编辑页面正在路由到查看页面

Php 编辑页面正在路由到查看页面,php,laravel,laravel-4,laravel-routing,Php,Laravel,Laravel 4,Laravel Routing,我正在为我的列表创建一个编辑页面,出于某种原因,当我转到listings/view/{id}/edit时,我被重定向到listings/view/{id} 这是ListingsController.php中的getEdit()方法 public function getEdit($id) { $listings = Listing::find($id); $this->layout->content = View::make('listings/edit')

我正在为我的列表创建一个编辑页面,出于某种原因,当我转到
listings/view/{id}/edit
时,我被重定向到
listings/view/{id}

这是ListingsController.php中的getEdit()方法

public function getEdit($id)
    {
    $listings = Listing::find($id);

    $this->layout->content = View::make('listings/edit')
        ->with('listings', $listings);
    }
这是
views/listings/edit.blade.php

<h1>Editing {{ $listings->id }}</h1>

<!-- if there are creation errors, they will show here -->
{{ HTML::ul($errors->all()) }}
{{ Form::model($listings, array('route' => array('listings/edit', $listings->id), 'method' => 'PUT')) }}

    <div class="form-group">
        {{ Form::label('status', 'Status') }}
        {{ Form::email('status', null, array('class' => 'form-control')) }}
    </div>

    <div class="form-group">
        {{ Form::label('listingfor', 'For') }}
                {{ Form::select('listingfor', array(
                    ''          => 'Listing For',
                    'For Sale'     => 'For Sale',
                    'For Rent'     => 'For Rent',
                    'Sale-Rent'     => 'Sale - Rent'
                ),'',
                    array('class' => 'form-control'
                )) }}
    </div>

    {{ Form::submit('Edit', array('class' => 'btn btn-primary')) }}

{{ Form::close() }}
Route::controller('users', 'UsersController');
Route::controller('listings', 'ListingsController');
Route::post('listings/add', array('uses' => 'ListingsController@setAdd'));

Route::get('contacts', function()
{
    return View::make('listings.add');
});
Route::get('listings/edit/{id}', array('uses' => 'ListingsController@getEdit'));
Route::get('listings/view/{id}', array('uses' => 'ListingsController@getView'));

Route::get('add', array('uses' => 'ListingsController@getAdd'));
Route::controller('/', 'HomeController');
来自artisan Routes的路由

+--------+-----------------------------------------------------------------+------+----------------------------------+----------------+---------------+
| Domain | URI                                                             | Name | Action                           | Before Filters | After Filters |
+--------+-----------------------------------------------------------------+------+----------------------------------+----------------+---------------+
|        | GET|HEAD users/register/{one?}/{two?}/{three?}/{four?}/{five?}  |      | UsersController@getRegister      |                |               |
|        | GET|HEAD users/login/{one?}/{two?}/{three?}/{four?}/{five?}     |      | UsersController@getLogin         |                |               |
|        | GET|HEAD users/logout/{one?}/{two?}/{three?}/{four?}/{five?}    |      | UsersController@getLogout        |                |               |
|        | GET|HEAD users/dashboard/{one?}/{two?}/{three?}/{four?}/{five?} |      | UsersController@getDashboard     |                |               |
|        | POST users/create/{one?}/{two?}/{three?}/{four?}/{five?}        |      | UsersController@postCreate       |                |               |
|        | POST users/signin/{one?}/{two?}/{three?}/{four?}/{five?}        |      | UsersController@postSignin       |                |               |
|        | GET|HEAD|POST|PUT|PATCH|DELETE users/{_missing}                 |      | UsersController@missingMethod    |                |               |
|        | GET|HEAD listings/main/{one?}/{two?}/{three?}/{four?}/{five?}   |      | ListingsController@getMain       |                |               |
|        | GET|HEAD listings/view/{one?}/{two?}/{three?}/{four?}/{five?}   |      | ListingsController@getView       |                |               |
|        | GET|HEAD listings/add/{one?}/{two?}/{three?}/{four?}/{five?}    |      | ListingsController@getAdd        |                |               |
|        | GET|HEAD listings/edit/{one?}/{two?}/{three?}/{four?}/{five?}   |      | ListingsController@getEdit       |                |               |
|        | POST listings/edit/{one?}/{two?}/{three?}/{four?}/{five?}       |      | ListingsController@postEdit      |                |               |
|        | POST listings/add/{one?}/{two?}/{three?}/{four?}/{five?}        |      | ListingsController@postAdd       |                |               |
|        | GET|HEAD|POST|PUT|PATCH|DELETE listings/{_missing}              |      | ListingsController@missingMethod |                |               |
|        | POST listings/add                                               |      | ListingsController@setAdd        |                |               |
|        | GET|HEAD contacts                                               |      | Closure                          |                |               |
|        | GET|HEAD listings/edit/{id}                                     |      | ListingsController@getEdit       |                |               |
|        | GET|HEAD listings/view/{id}                                     |      | ListingsController@getView       |                |               |
|        | GET|HEAD add                                                    |      | ListingsController@getAdd        |                |               |
|        | GET|HEAD|POST|PUT|PATCH|DELETE {_missing}                       |      | HomeController@missingMethod     |                |               |
+--------+-----------------------------------------------------------------+------+----------------------------------+----------------+---------------+

您正在手动调用listings/edit route,但您应该使用内置函数来实现此功能,因此:

{{ Form::model($listings, array('route' => array('listings/edit', $listings->id)...
应该是这样的:

{{ Form::model($listings, array('action' => array('ListingsController@edit', $listings->id)...

这样,Laravel就知道你想要什么了。

默认情况下,你已经拥有了它:

GET|HEAD listings/view/{one?}/{two?}/{three?}/{four?}/{five?}
因此,删除这两个:

Route::get('listings/edit/{id}', array('uses' => 'ListingsController@getEdit'));
Route::get('listings/view/{id}', array('uses' => 'ListingsController@getView'));

选中beggining Route::controller中的“artisan routes”(“listings”…设置如下路径:GET | HEAD listings/view/{one?}/{two?}/{three?}/{four?}/{five?},因此它也与您稍后定义的编辑路径匹配。我有这个
GET | HEAD listings/edit/{one?}/{two two three?}/{three?}/{four?}/{five?}|ListingsController@getEdit
这是否意味着URI是
listings/edit/{id}
?即使是这样,如果我访问该URI,我得到的
Route[listings/edit]未定义。(视图:C:\wamp\www\re3\app\views\listings\edit.blade.php)
粘贴来自artisan的所有路由我用
artisan路由更新了我的帖子
检查答案,它应该会像你预期的那样工作,这就是问题所在。路由仍然让我困惑。非常感谢。但是我想我应该为我创建的每个自定义方法创建一个路由。
getAdd()
show()不同
对于定制,您应该这样做;对于已有的,您不应该这样做