在没有 Internet 连接的情况下手动配置 KnpPaginatorBundle
Posted
技术标签:
【中文标题】在没有 Internet 连接的情况下手动配置 KnpPaginatorBundle【英文标题】:Configuring KnpPaginatorBundle manually without internet connection 【发布时间】:2014-01-29 21:51:48 【问题描述】:我需要在断开连接的环境中设置包。我已经阅读了一些讨论它的特殊网站,但在以前的版本中。
我使用的是最近下载的 Symfony 2.4.1。 我今天下载的KnpPaginatorBundle包。
我从 GitHub 存储库中提取了 master.zip,其中包含以下文件夹:“KnpPaginatorBundle-master”,并采用以下结构:
\vendor\Knp\Bundle\PaginatorBundle
我收到了这个错误:
ClassNotFoundException: Attempted to load class "KnpPaginatorBundle" from namespace "Knp\Bundle\PaginatorBundle" in C:\Easyphp-DevServer-14.1VC11\data\localweb\projects\sf_zktime\app\AppKernel.php line 20. Do you need to "use" it from another namespace?
这是 App_Kernel.php 中的第 20 行:
new Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(),//Paginator
这是我在供应商包中的本地路径:
C:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\sf_zktime\vendor\Knp\Bundle\PaginatorBundle
这是我的 config.yml 参数:
knp_paginator:
page_range: 5 # número de páginas que se muestran en el paginador
default_options:
# los siguientes tres parámetros permiten "traducir" el paginador
# puedes utilizar por ejemplo: 'pagina', 'ordenar' y 'direccion'
page_name: page
sort_field_name: sort
sort_direction_name: direction
# sólo incluir resultados diferentes (útil cuando haces consultas GROUP BY)
distinct: true
template:
# estas opciones configuran la plantilla utilizada para la paginación
# y para los controles que premiten reordenar los resultados
pagination: KnpPaginatorBundle:Pagination:sliding.html.twig
sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig
这是这些参考文献之间的混合:
http://symfony.es/bundles/knplabs/knppaginatorbundle/instalacion-en-symfony-2-1 https://github.com/KnpLabs/KnpPaginatorBundle/
【问题讨论】:
检查vendor/composer/autoload_namespaces.php
中的'Knp\\Bundle\\PaginatorBundle' => array(...
行。线下的方式一塌糊涂。
【参考方案1】:
编辑vendor/composer/autoload_namespaces.php
并添加这一行:
'Knp\\Bundle\\PaginatorBundle' => array($vendorDir . '/knplabs/knp-paginator-bundle'),
编辑:将你的插件文件夹移动到vendor/knplabs/knp-paginator-bundle/
,所以现在真正的路径是:vendor/knplabs/knp-paginator-bundle/Knp/Bundle/PaginatorBundle/
。
然后删除缓存并重新加载网络服务器。
【讨论】:
我做了你建议的最后一件事,但是控制台在尝试清理缓存时给出了这个错误:C:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\sf_zktime\app>php 控制台缓存:清除 PHP 致命错误:在第 21 行的 C:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\sf_zktime\app\AppKernel.php 中找不到类 'Knp\Bundle\PaginatorBundle\KnpPaginatorBundle'。跨度> 检查编辑的答案,将插件根目录放在我指定的文件夹中。 我会这样做,但是为什么我需要添加额外的文件夹级别,我看到几个供应商包的功能相同。有什么逻辑原因吗?/knplabs/knp-paginator-bundle
部分是contanier 文件夹,可以是任何东西,路径的其余部分是实际的命名空间,这就是为什么你不能把它放在vendor/
中。
问题消失了,但它引发了我不知道的其他异常:ReflectionException: Class Knp\Component\Pager\Event\Subscriber\Paginate\PaginationSubscriber 不存在【参考方案2】:
编辑vendor/composer/autoload_namespaces.php
并添加这一行:
'Knp\\Component' => array($vendorDir . '/knplabs/knp-components/src'),
'Knp\\Bundle\\PaginatorBundle' => array($vendorDir . '/knplabs/knp-paginator-bundle'),
它对我有用
问候..
亨拉万
【讨论】:
【参考方案3】:解决办法是:
1) 在 cmd 中运行: 作曲家需要 knplabs/knp-paginator-bundle
2) 在 autoload_namespaces 添加: 'Knp\Component' => 数组($vendorDir . '/knplabs/knp-components/src'),
3) 在 config.yml 中:
knp_paginator:
page_range: 5 # number of pages displayed in the paginator.
default_options:
# the following three parameters allow "translate" the paginator.
# you can use eg 'page', 'order' and 'direction'
page_name: page
sort_field_name: sort
sort_direction_name: direction
# only include different results (useful when you do GROUP BY
# queries)
distinct: true
template:
# these options configure the template used for pagination.
# and the controls that allow you to sort the results
pagination: KnpPaginatorBundle:Pagination:sliding.html.twig
sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig
4) 在 Appkernel.php 中添加: 新的 Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(),
5) 在 cmd 运行中: php 应用程序/控制台缓存:清除
6) 重新加载浏览器。
7) 终于成功了!
【讨论】:
以上是关于在没有 Internet 连接的情况下手动配置 KnpPaginatorBundle的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在没有 Internet 连接的情况下在 webview 中加载网站?
如何在没有来自脚本的 Internet 连接的情况下在 Python 中转发地理编码?
允许 UIWebView 在没有 Internet 连接的情况下加载 http://localhost:port/path URI
如何在不使用 sudo 的情况下从终端窗口关闭 Internet 连接?