锂框架:如何在布局中获取控制器名称


Lithium framework: how to obtain controller name in layout

我在一个锂布局文件,我想回应当前控制器的名称(以后用作CSS类)。如何获取当前控制器的名称?

谢谢,aeno

我想你的意思是你在一个视图?

如果是这样,获取控制器或路由/请求的其他部分非常简单…

<?=$this->_request->controller;?>

这会让你得到Controller但是你可以从你的路由中得到你需要的任何东西。假设你有一个像…

这样的路由
Router::connect('/{:controller}/{:action}/{:id}');

您可以在视图中同时使用以下两种:

<?=$this->_request->action;?>
<?=$this->_request->id;?>

或者你可以有一个更花哨的路线,比如…

Router::connect('/{:id}/{:area}/{:controller}/{:action}/');

这将用于url:

http://mysite.com/123/media/photos/edit/

现在你可以这样做…

<?=$this->_request->area;?> 

获取url的"area"部分,等等。

下面的代码可以在任何锂布局或视图中使用,以查找当前控制器,将其转换为合适的CSS类名,并将其设置为div的类属性:

<?php
    $controller = $this->request()->controller;
    $controller_css_class = strtolower('lithium'util'Inflector::slug($controller));
?>
<div class="<?=$controller_css_class; ?>"></div>

请求类记录在这里:http://li3.me/docs/lithium/action/Request