HTML 帮助程序不会根据参数输出适当的链接



由于某种原因,我无法获得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>

相关内容

  • 没有找到相关文章

最新更新