为什么我无法从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 } ?>
答案 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 );