使用分页将哈希附加到Laravel中的url

时间:2014-09-19 19:54:01

标签: php url laravel pagination

我的路线:

Route::get('/app/search', ['as' => 'search', 'uses' => 'AppController@getSearch']);

我的控制器:

public function getSearch()
{        
    $searchTerm = Input::get('s');
    $locs = Loc::whereRaw('match(title, description) against(? in boolean mode)', [$searchTerm])
        ->paginate(10); 
    $locs->getFactory()->setViewName('pagination::slider');        
    $locs->appends(['s' => $searchTerm]);
    $this->layout->with('title', 'Search: ' . $searchTerm);
    $this->layout->main = View::make('home')
        ->nest('content', 'index', ($locs->isEmpty()) ? ['notFound' => true] : compact('locs'));
}

我得到的网址是:“www.example.com/app/search?s=search+term”

我想:“www.example.com/app/search?s=search+term#result”直接转到结果元素。

我尝试在控制器和视图中都使用$locs->fragment('result')->links();,但没有任何改变。

人们要求提供更多信息,比如显示网址的生成位置,但问题是我不知道。 Route,Controller和View似乎都不对此负责。

这有点奇怪,我无法理解网址是如何生成的,我想:

$locs->appends(['s' => $searchTerm]);

负责,但即使我删除该行,网址也没有任何变化。 所以我真的坚持这一点,laravel文档没有帮助,我无法在网上找到文档或帮助。

2 个答案:

答案 0 :(得分:1)

Laravel目前支持此功能

根据Laravel documentation,您需要使用片段方法

{{ $users->fragment('result')->links() }}

答案 1 :(得分:0)

我使用jquery创建了解决方法:

@if($orders->hasPages())
    <div class="section">
        <div class="section__content hash-pagination" data-hash="promo-orders">
            {!! $orders->appends(request()->all()) !!}
        </div>
    </div>
@endif


<script>
    $(document).ready(function () {
        $('.hash-pagination').each(function(element){
            var hash = $(this).data('hash');
            var links = $(this).find('a');

            links.each(function(link){
                var href = $(this).attr('href');
                $(this).attr('href', href + '#' + hash);
            });
        });
    });
</script>