请帮帮我。我对kohana很新。最好的方法是根据子域选择控制器。例如:
www.site.com - >控制器:siteroot。方法:运行 admin.site.com - >控制器:adminsite。方法:运行 moderator.site.com - >控制器:版主。方法:运行 director.site.com - >控制人:directorite。方法:运行 默认:主管:合作伙伴。方法:运行
run方法为这些子域执行操作,并将从监督模块中带来一个页面。
我使用kohana v3.0
答案 0 :(得分:4)
我认为Kohana没有提供任何直接处理方法,但您可以随时在bootstrap.php文件中添加一些自定义代码,根据当前子域设置不同的路径:
switch ($_SERVER['SERVER_NAME'])
{
case 'site.com':
// Default routes.
$controller = 'siteroot';
break;
case 'admin.site.com':
// Admin routes.
$controller = 'adminsite';
break;
// Etc.
}
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => $controller,
'action' => 'run'));
您是否真的需要为每个案例分别使用一个域名?使用site.com/admin,site.com/moderator等可能更明智。
答案 1 :(得分:1)
我认为它不会开箱即用,MatW。 如果它是app_path的子目录,那将是真的,但如果不是,它将永远不会路由到文件夹的index.php。 可以使用apache中的htaccess或httpd.ini来完成。
答案 2 :(得分:0)
由于该子域无论如何都将映射到目录,因此根本不需要添加任何自定义代码,这正是Kohana 3中Routes的用途。
子域名: admin.site.com
映射到目录:〜/ public_html / admin /
控制器: Controller_Adminsite
控制器目录:〜/ application / classes / controller / adminsite.php
bootstrap.php的路线:
Route::set('admin', 'admin(/<action>(/<id>))')
->defaults(array(
'controller' => 'adminsite',
'action' => 'run',
));
答案 3 :(得分:0)
看起来有人实际上已经创建了一个用于执行子域路由的子模块: