cakephp HTML帮助器没有根据参数输出适当的链接

wdebmtf2  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(138)

由于某种原因,我无法获得HTML帮助程序来输出/users/workspace
我目前正在/users/login上测试以下代码

echo '<li>'.$this->Html->link(h($this->request->getParam('controller')),['controller' => $this->request->getParam('controller'), 'action' => 'workspace']).'</li>';
echo '<li>'.$this->Html->link(h($this->request->getParam('controller')),['controller' => $this->request->getParam('controller'), 'action' => 'anything-here-works']).'</li>';

将输出:

<li><a href="/slat">Users</a></li>
<li><a href="/slat/users/anything-here-works">Users</a></li>

workspace是一个保留字还是什么?我遗漏了什么或不理解什么?
我正在使用CakePHP 3.10。
注意路线设置:

$routes->connect('/', ['controller' => 'Users', 'action' => 'workspace']);
ql3eal8s

ql3eal8s1#

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

据我所知,基本路径路由已在上述路由中定义,因此,当为
“$this-〉Html-〉link(h($this-〉请求-〉获取参数('控制器')),['控制器' =〉$this-〉请求-〉获取参数('控制器'),'操作' =〉'工作空间'])”
这里控制器=“用户”和动作=“工作空间”,因此它得到与路由上的“/”匹配的基本路径“/slat”。
我认为“slat”是本地主机上的项目目录。
您可以生成链接在更自定义的方式,即:-

<a href="<?= $this->Url->build(['controller'=>'Users','action'=>'workspace']);">" >Link</a>

如果你需要为特定的用户类型(如admin)进行路由,你可以在cakephp 3.x上创建前缀路由前缀路由
另外,$this-〉request-〉getParam('controller')给出了当前控制器的名称,因此当您跳转到其他页面时,链接可能会出错。
您可以直接提及控制器名称,而不是使用“getParam”
同样,为当前controller的action生成链接(只在当前controller的模板文件中提及),不需要提及controller的名称,只需要action名称和参数即可。
例如:

<a href="<?= $this->Url->build(['action'=>'workspace']);">" >Link</a>

相关问题