我在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
有什么不同?
请帮忙!
答案 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" />