cakephp链接不相关

时间:2010-05-07 15:10:14

标签: cakephp html-helper hyperlink relative absolute

在我的布局中,我有一个菜单,我已将其作为元素包含在内,并且它包含一个类似的链接..

<? $html->link('New Part Number','/part_numbers/add'); ?>

我遇到的问题是蛋糕没有正确重定向,它最终将我发送到“http://localhost/part_numbers/add”而不是“http://localhost/my_client_folder/client_app/part_numbers/add”(我正在本地构建)。我的cakephp应用程序存储在我的webroot文件夹下面的几个目录中,但我认为cakephp会自动检测如何构建链接,无论应用程序位于何处,对吧?

那么我需要配置应用程序根文件夹,还是创建路由或什么?

谢谢!

4 个答案:

答案 0 :(得分:1)

感谢大家的解决方案,我以前的解决方案确实是错误的:

你必须从“$ this”构建它,以便它知道你来自哪里,否则它无法弄清楚如何构建相对链接。

Html-&gt; link(“新零件号”,数组('controller'=&gt;'part_numbers','action'=&gt;'add')); ?&GT;

正如下面提到的那样,链接不起作用的真正原因是因为没有指定数组。这应该可以修复链接:

<?= $html->link("New Part Number", array('controller' => 'part_numbers', 'action' => 'add')); ?>

答案 1 :(得分:1)

如果您使用示例中的网址而不是array('controller', 'action'),则您的解决方案也不例外。

解决方案是将<base href="<?php echo 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'); ?>" />放入标题中。

这将使所有链接(也是src标记)相对于您的webroot。它不会影响JS / CSS URL-s!

答案 2 :(得分:1)

一般情况下,我建议始终始终在视图和控制器操作中始终使用反向路由,这是一种纪律。根据我的经验,一旦您开始尝试使用任何高级路由功能,“智能网址”(例如/ part_numbers / add)会很快崩溃。

它也违反了编写代码一次的原则,多次读取它 - 识别由/part_numbers/add之类的简单路径调用的控制器操作可能很简单,但在具有大量自定义路由的大型应用程序中,它如果您始终如一地使用反向路由数组,那么弄清楚链接将调用的操作会变得更加简单。

答案 3 :(得分:1)

您也可以使用:

Router::url(array(controller => '', action => '', true))