在Kohana请求:: $ controller

时间:2011-02-02 23:30:22

标签: php kohana kohana-3

为什么我无法从View中请求使用过的控制器名称?

例如,someview.php包含:

<?php echo Request::$controller; ?>

Kohana显示错误:“ErrorException [致命错误]:访问未声明的静态属性:Request :: $ controller”

为什么呢?怎么了?

我需要这样做:

<?php if (Request::$controller != 'index') { ?> <a href="/">Example.com</a> <?php } else { ?> Example.com <?php } ?>

5 个答案:

答案 0 :(得分:4)

在控制器上执行此操作:

View::bind_global('controller', $this->request->param('controller'));

然后,您可以在任何视图上访问$controller

答案 1 :(得分:3)

请求应该通过它的静态方法访问,不需要定义其他静态属性||得到它的全球观点。

Request::instance()将返回主请求实例('母实例')。 Request::current()将返回当前活动请求的实例,您可以使用Controller中的$this->request访问该内容。

<? if (Request::current()->controller !== 'index') : ?> 

    <a href="<?= URL::site() ?>">Example.com</a> 

<? else : ?> 

    Example.com 

<?  endif; ?>

答案 2 :(得分:1)

我会像yoda建议的那样做,但是我可能也会将这个逻辑放在控制器中。

我假设您想要一个返回家的链接?

$link = (Request::$controller != 'index') ? '<a href="/">Example.com</a>' : 'Home';
$this->template->set_global('homeLink', $link);

不要忘记,您可以使用Route::get()或其中一位朋友建立您路线的链接。

答案 3 :(得分:0)

在Kohana 3.1

<? if (Request::current()->controller !== 'index') : ?>

给出“ErrorException [Notice]:Undefined property:Request :: $ controller”。那么我只是使用Request :: current() - &gt; controller()来查看可接受/最佳实践/最佳性能?

<? if (Request::current()->controller() !== 'index') : ?> 

    <a href="<?= URL::site() ?>">Example.com</a> 

<? else : ?> 

    Example.com 

<?  endif; ?>

答案 4 :(得分:0)

Kohana 3.2:在控制器中粘贴这个(我发现你真的很蠢,你不能使用bind_global)

View::set_global('controller', $this->request->current()->controller());

然后在视图中,您可以使用:

echo ( $controller );