由于某种原因,我无法获得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>"
,当为
创建链接时Html"$ this→→链接(h ($ this→请求→getParam(控制器)),("控制器"=比;$this->request->getParam('controller'), 'action' =>"工作区")">
这里controller = "Users"并且action="工作区",因此它得到了基本路径"/slate "As与"/"在路上。
i think ">
您可以以更自定义的方式生成链接,例如:-
<a href="<?= $this->Url->build(['controller'=>'Users','action'=>'workspace']);">" >Link</a>
如果您需要为特定用户类型(如admin)路由,您可以在cakephp 3.x上创建前缀路由
另外,$this->request->getParam('controller')给出了当前控制器的名称,所以当你跳转到其他页面时,链接可能会出错。
你可以直接提到控制器名,而不是使用" getparameter ">
也用于为当前控制器的动作生成链接(只在当前控制器的模板文件中提到),你不需要提到控制器的名称,只需要动作名称和参数就足够了。
ie:
<a href="<?= $this->Url->build(['action'=>'workspace']);">" >Link</a>