是否有任何理由允许登录用户查看用户指南?
我会在引导程序中添加这样的东西
//Add modules that are only relevant to local development
if(Kohana::$environment == Kohana::DEVELOPMENT)
{
Kohana::modules(array_merge(Kohana::modules(), array(
'codebench' => MODPATH.'codebench', // Benchmarking tool
'userguide' => MODPATH.'userguide', // User guide and API documentation
'unittest' => MODPATH.'unittest', // Unit testing
)));
}
然后任何面向公众的网站只需将其更改$environment
为其他内容,例如STAGING
或TESTING
Kohana::$environment = Kohana::TESTING //In the bootstrap file
或者
SetEnv KOHANA_ENV TESTING //to the .htaccess file
选项 2 - 首先加载 auth 模块
我刚试过这个,似乎对我有用。在您的引导文件中,像这样加载模块:
/**
* Enable modules. Modules are referenced by a relative or absolute path.
*/
Kohana::modules(array(
'auth' => MODPATH.'auth', // Basic authentication
'cache' => MODPATH.'cache', // Caching with multiple backends
'database' => MODPATH.'database', // Database access
'image' => MODPATH.'image', // Image manipulation
'orm' => MODPATH.'orm', // Object Relationship Mapping
));
//Add modules that are only relevant to testing
if(Kohana::$environment == Kohana::DEVELOPMENT and Auth::instance()->logged_in())
{
Kohana::modules(array_merge(Kohana::modules(), array(
'codebench' => MODPATH.'codebench', // Benchmarking tool
'userguide' => MODPATH.'userguide', // User guide and API documentation
'unittest' => MODPATH.'unittest', // Unit testing
)));
}
选项 3 - 隔离 API 浏览器
用户指南配置中有一个配置选项:
// Enable the API browser. TRUE or FALSE
'api_browser' => TRUE,
如果用户未登录,您可以将其设置为 false,类似于上述模块的加载。目前是一个错误,它会导致用户指南模板崩溃,因为它找不到通往 API 的路径。
如果你想努力让它工作(直到有更新),然后复制/modules/userguide/views/userguide/template.php
到/application/views/userguide/template.php
第 28 到 30 行,然后用这个替换:
<li class="api">
<a href="<?php echo (Kohana::$config->load('userguide.api_browser') === TRUE)?Route::url('docs/api'):'#'; ?>"><?php echo __('API Browser') ?></a>
</li>
并将其放入/application/config/userguide.php
:
<?php defined('SYSPATH') or die('No direct script access.');
$config = array();
if(Kohana::$environment == Kohana::DEVELOPMENT and Auth::instance()->logged_in())
{
$config['api_browser'] = FALSE;
}
return $config;