CakePHP 3.5 - 路由器无法执行HTML链接

时间:2017-10-07 08:05:43

标签: cakephp

自从过去几天以来,我一直在努力工作我的HTML链接路线。但仍然无法解决问题。我已将我的项目添加到virtualhost中的Ubuntu 16.04

<VirtualHost *:80>
DocumentRoot "/home/user/cakephp/employee/webroot"
ServerName cakeemployee.dev
<Directory "/home/user/cakephp/employee/webroot">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

这是路由器代码 -

Router::scope('/', function (RouteBuilder $routes) {

$routes->connect('/', ['controller' => 'Employees', 'action' => 'index']);

$routes->connect('/add', ['controller' => 'Employees', 'action' => 'add']);

$routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);

$routes->fallbacks(DashedRoute::class);
});

以下是我添加到HTML link

Layout->default.ctp
<div class="top-bar-section">
        <ul class="right">
            <li><?= $this->Html->link('Add Employee', '/add', ['action' => 'add']) ?></li>
        </ul>
    </div>

我的/路由工作正常但是当我尝试Add Employee链接时,它无法正常工作并引导我进入404页。

我不明白我的virtualhost配置是否有问题,或者我的代码有问题。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

根据CakePHP Api,您必须将url作为字符串或routing array作为第二个参数传递给HtmlHelper::link()方法。

在您的情况下,您可以这样做:

// Param as String
<?= $this->Html->link('Add Employee', '/add') ?>

// Param as Routing Array
<?= $this->Html->link('Add Employee', ['controller' => 'Employees', 'action' => 'add']) ?>

出于调试目的,您始终可以直接访问路由而无需链接,例如。 http://cakeemployee.dev/add查看路由是否配置正确(应该是这种情况)。

另外在html中查看,CakePHP生成哪个链接。如果链接未指向正确的位置,您可能希望通过添加'_full'=>true作为链接方法的选项来添加网址的完整路径。请参阅https://book.cakephp.org/3.0/en/views/helpers/html.html#creating-links

答案 1 :(得分:0)

我忘了启用mod_rewrite