HTML 助手没有根据参数输出适当的 link
HTML helper doesn't output appropriate link based on parameters
出于某种原因,我无法让 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']);
$routes->connect('/', ['controller' => 'Users', 'action' => 'workspace']);
据我所知,基本路径路由已经在上面的路由中定义,所以它生成“<li><a href="/slat">Users</a></li>"
,当link为
创建时
"$this->Html->link(h($this->request->getParam('controller')),['controller' => $this->request->getParam('controller'), 'action' => 'workspace'])"
here controller = "Users" and action="workspace", hence it gets the base path "/slat" as matches with "/" on the route.
我认为“slat”是您在本地主机上的项目目录。
您可以以更自定义的方式生成 links,即:-
<a href="<?= $this->Url->build(['controller'=>'Users','action'=>'workspace']);">" >Link</a>
如果您需要针对特定用户类型(如管理员)进行路由,您可以创建前缀路由 prefix routing on cakephp 3.x
另外,$this->request->getParam('controller')给出的是当前控制器的名称,所以跳转到其他页面时link可能会出错
您可以直接提及控制器名称,而不是使用“getParam”
也为当前控制器的动作生成link(仅在当前控制器的模板文件中提及),您无需提及控制器名称,只需动作名称和参数即可。
即:
<a href="<?= $this->Url->build(['action'=>'workspace']);">" >Link</a>
出于某种原因,我无法让 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']);
$routes->connect('/', ['controller' => 'Users', 'action' => 'workspace']);
据我所知,基本路径路由已经在上面的路由中定义,所以它生成“<li><a href="/slat">Users</a></li>"
,当link为
"$this->Html->link(h($this->request->getParam('controller')),['controller' => $this->request->getParam('controller'), 'action' => 'workspace'])"
here controller = "Users" and action="workspace", hence it gets the base path "/slat" as matches with "/" on the route.
我认为“slat”是您在本地主机上的项目目录。
您可以以更自定义的方式生成 links,即:-
<a href="<?= $this->Url->build(['controller'=>'Users','action'=>'workspace']);">" >Link</a>
如果您需要针对特定用户类型(如管理员)进行路由,您可以创建前缀路由 prefix routing on cakephp 3.x
另外,$this->request->getParam('controller')给出的是当前控制器的名称,所以跳转到其他页面时link可能会出错
您可以直接提及控制器名称,而不是使用“getParam”
也为当前控制器的动作生成link(仅在当前控制器的模板文件中提及),您无需提及控制器名称,只需动作名称和参数即可。
即:
<a href="<?= $this->Url->build(['action'=>'workspace']);">" >Link</a>