编辑: 我使用的是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'));
这是否必须处理首次接收路由的方式,如果是,为什么会发生这种情况?
答案 0 :(得分:0)
如@ Barry_127所述,Laravel将根据最具体到最不具体的路线进行匹配。因此,按照该顺序列出路线是一种很好的做法。