是否可以通过搜索字段使用“switch_user”
Is it possible to use `switch_user` through a search field?
我正在尝试填充要在搜索框中使用的值,以便超级用户可以模拟其他用户。然而,我遇到了下面列出的问题,我不确定是否有统一的解决方案,或者至少有一种"正确"的方法来处理它:
- 如何传递脚本的搜索字符串和用户名值
- 如何重新加载当前页面,但使用
?_switch_user=jsmith
补充路径(例如) - 如果超级用户在模拟一个用户(如
jsmith
)和另一个普通用户之间切换,我会得到一个错误:您已经切换到"jsmith"用户。
我的搜索表单:
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="search" id="search-names" class="form-control" placeholder="Enter username to switch to">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
脚本:
这是在我的基础树枝模板中(因为表单在所有页面的导航栏中)。我实际使用的代码是var searchnames = ["Smith, John",...
,但我需要以某种方式传递所选的用户名(例如jsmith
)来重新加载同一页面,但以?_switch_user=jsmith
为参数:
<script>
$(function() {
var searchnames = [
"Smith, John" => "jsmith",
"Doe, Jane" => "jdoe1990",
];
$( "#search-names" ).autocomplete({
source: searchnames
});
});
</script>
我的想法是从我的UserRepository中传递一个所有名称/用户名的列表,并将它们全部填充到trick中。除此之外,我不知道从哪里开始传递?_switch_user=
的参数
这是PHP中的一个关联数组:
var searchnames = [
"Smith, John" => "jsmith",
"Doe, Jane" => "jdoe1990",
];
在JavaScript中,只有普通的数组和对象。对象可以用于键/值对。
源选项可以采用一组对象。每个对象都有一个value
和label
属性。
[
{ "label": "Smith, John", "value": "jsmith" },
{ "label": "Doe, Jane", "value": "jdoe1990" }
]
如果你有一组固定的用户,你可以简单地将他们添加到你的JavaScript函数中,仅此而已。
然而,用户可能来自数据库。您可以创建系统中所有用户的对象,将它们传递到(Twig)视图,并使用json_encode
过滤器输出它们。然而,这是一种糟糕的做法,因为它会使HTML膨胀并增加安全风险。(o.a.即使您注销,所有用户仍在浏览器缓存中。)
相反,您可能想要使用AJAX。您可以将source
选项设置为URL,该URL由您的用户控制器处理。(请参阅jQuery UI远程示例。)
$("#search-names).autocomplete({
source: "/users/search"
});
搜索动作查询数据库并创建具有相关联的阵列的阵列,每个阵列具有value
和label
关键字。然后将其输出为JSON。
选择选项后加载页面的最后一步操作。这可以在JavaScript中通过设置window.location
来完成。
$("#search-names").autocomplete({
source: "/users/search",
change: function() {
var username = $(this).val();
if (!username) return;
window.location = window.location + '?_switch_user=' + username;
}
});
该代码未经测试,可能需要进行一些修改才能真正工作
- 如何在ng-reeat中使用ng-switch来编辑JSON API数据
- 解析-为什么user.getSessionToken()返回未定义的结果
- 我将如何将Base的原型分配给User
- 我需要NG-IF/NG-SWITCH还是NG-SHOW&NG-HIDE
- PassportJS/忘记密码:req.user只定义一次
- User getSessionToken() Returning Undefined
- Node.js-承诺和锥形语句(if、switch等)-如何构建
- Toggle Switch在包含ng model和ng repeat之后不进行切换
- switch语句中的Javascript作用域
- 我可以用javascript中的switch或case语句重构if-else吗
- switch语句中出错,Javascript
- 在 Meteor.loginWithPassword 之后,旧用户不会离线(meteor-user-status 包)
- 使用 switch 语句更改页面正文
- 开箱即用的Light Switch HTML应用程序在IE9中存在null错误
- 为什么Parse.User.current()为null
- Javascript-尝试使用switch语句
- 如何将这个简单的switch语句重写得更简洁
- switch(true)作为else-if的替代
- Js提示:“;期望一个赋值或函数调用,而看到一个表达式“;,Switch语句
- 在/user/后面显示用户名的用户信息