我正在使用Yii。我想在布局上有一个动态链接。控制器将修改此动态链接。假设动态链接使用控制器给出的用户id来执行任务。
我正在考虑使用jQuery脚本获取控制器返回的用户ID,然后使用用户ID修改包含动态链接的div。
您如何看待这种技术?
答案 0 :(得分:1)
您似乎希望使用客户端JavaScript动态更改页面呈现后的链接。但是,在服务器大小的PHP呈现过程中,第一次动态呈现不同的链接更有意义。毕竟,控制器会生成视图!我会在页面请求期间从控制器获取用户ID,将ID传递到视图,然后在初始页面加载时动态构建视图中的链接。
如果要修改布局(不是视图)中的链接,那么最好的办法是在Controller中创建一个变量,并在视图中设置该变量。看看Yii如何使用$ layout,$ menu和$ breadcrumbs变量来实现这一目标。
假设用户已登录并且您想要他们的 ID,您也可以从Yii :: app()对象获取ID,如下所示:
<?php echo CHtml::link('Edit user',array('user/edit','userId'=>Yii::app()->user->id)); ?>
但是在那时,您可以在控制器中请求用户的ID,而不需要构建这样的链接。
假设您想要一个不同的用户ID而不是登录用户,请将该ID($ userId)从控制器传递到视图中,然后执行此操作(如Moyersy所说):
<?php echo CHtml::link('Edit user',array('user/edit','userId'=>$userId)); ?>
这将构建以下链接(其中$ userId = 99999999):
<a href="/user/edit?userId=99999999">Edit user</a>
因此,当单击链接时,在actionEdit()中,您现在可以通过GET变量$ _GET ['userId']访问用户的ID。
现在,如果你想要做什么是更改已经创建的链接,那么你需要使用jQuery。但是您需要更详细地解释为什么要这样做以及触发链接更改的原因(下拉菜单?)。
答案 1 :(得分:0)
对不起,我无法理解你要做什么。具体来说,我不明白动态链接是什么。
编辑:
<? echo CHtml::link('Edit user',array('user/edit','userId'=>$userId)); ?>