怎么修 ?在链接而不是/

时间:2015-07-05 17:37:48

标签: php html laravel laravel-4 hyperlink

我想通过“name”将我的“/nameID”链接到其他页面。

例如:<a href='./2'>number 2</a>

我试过了:

@foreach($adverts as $advert) 
  {{link_to_route('adverts', $advert->name, array($advert->id))}} 
@endforeah

它返回给我:<a href="http://localhost:8000/?2">,但我需要<a href="http://localhost:8000/2">

我哪里错了?

更多详情:

模型/ advert.php

class advert extends Eloquent {
    protected $table = 'adverts';
}

routes.php文件

Route::get('/', array('as'=>'adverts', 'uses'=>'advertsController@index'));
Route::get('/{id}', array('as'=>'advert', 'uses'=>'advertsController@info'));

控制器/ advertsController.php

public function index() {
    return View::make('adverts.index')
               ->with('adverts', advert::All());
}
public function info($id) {
    return View::make('adverts.info')
               ->with('advert', advert::find($id));
}

当我将第二条路线更改为'as'=>'adverts'时,它可以正常工作。但我不知道它为什么会起作用。如果我清楚地理解,'as'=>'advert'只是路线的特定名称,不是吗?

2 个答案:

答案 0 :(得分:1)

您需要更改路径定义并添加路径参数:

$('#yourSpanID').textContent = readUser.name;

答案 1 :(得分:1)

你使用了错误的路线。您应该使用advert(单数),因为这是带参数的路径。如果您尝试使用索引路由(adverts),它会将任何其他参数作为查询字符串添加。

所以鉴于你有这些路线:

Route::get('/', array('as'=>'adverts', 'uses'=>'advertsController@index'));
Route::get('/{id}', array('as'=>'advert', 'uses'=>'advertsController@info'));

如果您想要链接到单个广告,则需要使用以下内容:

{{ link_to_route('advert', $advert->name, array($advert->id)) }}

另外,您可能需要查看resource controllers。它们非常适合这样的情况,您希望一个路径/视图列出资源,另一个路径/视图查看特定资源的详细信息。