【问题标题】:How to fix ? on the link instead of /怎么修 ?在链接上而不是 /
【发布时间】:2015-09-22 20:24:23
【问题描述】:

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

例如:<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">

我哪里错了?

更多细节:

models/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' 只是路由的具体名称,不是吗?

【问题讨论】:

    标签: php html laravel laravel-4 hyperlink


    【解决方案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。它们非常适合此类情况,您希望一个路由/视图列出资源,而另一个路由/视图查看特定资源的详细信息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您好,谢谢您的帮助。我已经更改了我的问题以获得更多规范。你能帮助我吗?请
      • 它起作用了,因为第二个路由定义覆盖了第一个。无论如何,您应该定义 2 个路由:显示所有广告的广告和按 id 显示广告的广告,然后确保在 link_to_route 中使用正确的一个。你也可以看看 Martin 建议的资源控制器
      猜你喜欢
      • 2021-03-23
      • 2022-12-03
      • 2012-08-09
      • 2019-07-15
      • 2022-08-22
      • 2021-07-11
      • 2014-04-21
      • 1970-01-01
      • 2017-05-08
      相关资源
      最近更新 更多