PHP: Generate Laravel Paginator Secure (HTTPS) Links
我正在开发一个使用 Laravel 4.2 over HTTPS 的应用程序,带有安全路由和重定向。我正在使用Paginator对结果进行分页,但是视图中呈现的链接指向http页面,我们如何强制Paginator生成https链接?
我今天遇到了这个问题,并找到了这个全局解决方案。
在您的 AppServiceProvider::boot 方法中,您可以添加以下内容以在分页链接上强制 https
1 | $this->app['request']->server->set('HTTPS','on'); |
如果您当前的页面是通过 HTTPS 提供的,那么生成的分页 URL 应该使用该架构。
但是,如果您使用的代理没有传递正确的标头,则负责确定连接是否安全的
如果这不起作用,您可以使用
1 2 | $results->paginate(); $results->setBaseUrl('https://' . Request::getHttpHost() . '/' . Request::path()); |
在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <?php class ZurbPresenter extends Illuminate\\Pagination\\Presenter { /** * Get HTML wrapper for a page link. * * @param string $url * @param int $page * @param string $rel * @return string */ public function getPageLinkWrapper($url, $page, $rel = null) { $rel = is_null($rel) ? '' : ' rel="'.$rel.'"'; if (strpos($url,"http://") === 0) { $url ="https://" . ltrim($url,"http://"); } return ' <li> '.$page.' </li> '; } /** * Get HTML wrapper for disabled text. * * @param string $text * @return string */ public function getDisabledTextWrapper($text) { return '<li class="disabled"><span>'.$text.'</span> </li> '; } /** * Get HTML wrapper for active text. * * @param string $text * @return string */ public function getActivePageWrapper($text) { return '<li class="active"><span>'.$text.'</span> </li> '; } } |
请注意,
创建一个视图文件以使用演示者。在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $presenter = new ZurbPresenter($paginator); $trans = $environment->getTranslator(); ?> <?php if ($paginator->getLastPage() > 1): ?> <ul class="pager"> <?php echo $presenter->getPrevious($trans->trans('pagination.previous')); echo $presenter->getNext($trans->trans('pagination.next')); ?> </ul> <?php endif; ?> |
最后更改您的应用配置以使用
1 | 'pagination' => '_zurb_pagination_simple', |
我对我的网站使用了类似的方法,您可以在此处验证它是否正常工作。