如何获得$ this-> webroot在CakePHP 3.0中的工作

时间:2015-03-23 17:43:35

标签: cakephp cakephp-3.0

我在services.ctp文件中有这段代码,之前在CakePHP 2.3.10中工作正常。

href="<?php echo $this->webroot . 'intro/services/1'; ?>

我刚刚将此文件复制到CakePHP 3.0.0中,它不再工作并抛出以下错误消息

  

错误:找不到C:\ apache2 \ htdocs \ myprojxxxx \ webroot \ Helper。

与CakePHP 3.0中的$this->webroot有什么不同?

请帮忙!

4 个答案:

答案 0 :(得分:17)

你需要使用它:

href="<?php echo $this->request->webroot . 'intro/services/1'; ?>

这适用于cakephp 3.0

答案 1 :(得分:1)

这首先不是你应该如何做到的,因为这样的“硬编码”URL与URL数组相比非常不灵活,在这里,连接路由在你的单个点定义生成的URL。应用程序,允许您轻松进行更改,而无需在整个应用程序中应用修改。

话虽如此,神奇的$webroot属性消失了(检查the migration guide),可以通过the View::$request object直接检索其值。

然而,您应该使用Router::url()UrlHelper或其中一种HtmlHelper方法:

\Cake\Routing\Router::url(['controller' => 'Intro', 'action' => 'services', 1])
$this->Url->build(['controller' => 'Intro', 'action' => 'services', 1])
$this->Html->link('Title', ['controller' => 'Intro', 'action' => 'services', 1])

另见

答案 2 :(得分:1)

在cakephp 4.x中,您需要使用以下代码:

href="<?php echo $this->Url->webroot.'/intro/services/1'; ?>

答案 3 :(得分:0)

在有效的蛋糕3.9中形成我:

<img src="<?php echo $this->Url->build('/img/logo_app.png');  ?>" style="width:250px" />