自从过去几天以来,我一直在努力工作我的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
配置是否有问题,或者我的代码有问题。
非常感谢你的帮助!
答案 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
。