Laravel 4 PHP:路由订单问题

时间:2014-10-16 16:25:26

标签: php laravel-4

编辑: 我使用的是Laravel 4 PHP,最初我认为这个问题与网页上的“link_to_route”方法有关,因此您只需链接到不包含任何动态数据的其他网页。

但是,我发现您列出路线的顺序最终将决定您的路线是否成功到达。

Authors2.php(Controller)

class Authors2_Controller extends BaseController {

public $restful = true;

public function contact() {

    return View::make('authors2.index')
    ->with('title','Authors and Books')
    ->with('authors2', Author2::orderBy('name')->get());
}

public function getnew() {

    return View::make('authors2.new')
        ->with('title', 'Add New Author');
}

routes.php文件

Route::get('authors2', array('as'=>'authors2', 'uses' =>'Authors2_Controller@contact'));

Route::get('authors2/new', array('as'=>'new_author', 'uses'=>'Authors2_Controller@getnew'));

index.blade.php(查看)

@extends('layouts.default')

@section('content')
<h1>Authors2 Home Page </h1>

<ul>
@foreach($authors2 as $author2)
    <li>{{ link_to_route('author2', $author2->name, $parameters = array($author2->id)) }}</li>
@endforeach 
</ul>

<p>{{ link_to_route('new_author', 'Add Author') }} </p>

@endsection

当我点击“添加作者”链接时,我收到错误“尝试获取非对象属性”错误。

修改 所以现在当我改变路由的顺序时,如果我在'authors2'路线之前列出'authors2 / new'路线,那么路线实际上会有效:

Route::get('authors2/new', array('as'=>'new_author', 'uses'=>'Authors2_Controller@getnew'));
Route::get('authors2', array('as'=>'authors2', 'uses' =>'Authors2_Controller@contact'));    

这是否必须处理首次接收路由的方式,如果是,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

如@ Barry_127所述,Laravel将根据最具体到最不具体的路线进行匹配。因此,按照该顺序列出路线是一种很好的做法。