我想知道是否有人知道如何使我的注销按钮起作用。
我的程序是这样的:
用户界面
ui2 <- function(){
tagList(tabPanel(""),
pageWithSidebar(
headerPanel(
""
),
sidebarPanel
(
actionButton("logout", "Logout")
),
mainPanel(tableOutput('aaa'))
)
)
}
ui1 <- function(){
tagList(h2("Hello", align = "center"),
div(id = "login",
wellPanel(textInput("userName", "Username"),
passwordInput("passwd", "Password"),
br(),actionButton("Login", "Log in"),
)}
}
服务器
server = (function(input, output,session) {
USER <- reactiveValues(Logged=FALSE)
observe({
if (USER$Logged == FALSE) {
if (!is.null(input$Login)) {
if (input$Login > 0) {
Username <- isolate(input$userName)
Password <- isolate(input$passwd)
query <- sprintf({"
SELECT rowid
FROM users
WHERE username='%s' and password ='%s'"},
Username, Password, serialize=F)
db <- RSQLite::dbConnect(RSQLite::SQLite(), dbname="db.sqlite")
user <- RSQLite::dbGetQuery(db, query)
RSQLite::dbDisconnect(db)
if ( length(user$rowid)==1 ) {
USER$Logged <- TRUE
}
}
}
}
})
observe({
if (USER$Logged == FALSE)
{
output$page <- renderUI({div(class="outer",do.call(bootstrapPage,c("",ui1())))})
}
if (USER$Logged == TRUE)
{
output$page <- renderUI({div(class="outer",do.call(navbarPage,c(inverse=TRUE,title = paste("Welcome", isolate(input$userName)," !"),ui2())))})
print(ui)
}
})
observeEvent(input$logout, {
output$page <- renderUI({div(class="outer",do.call(bootstrapPage,c("",ui1())))})
USER$Logged <- FALSE
})
})
我需要拥有所有这些用户界面,我很难加入它们,因为我不知道如何去做。
我尝试使用以下代码使其返回主页:
在服务器.R
observeEvent(input$reset_button, {
shinyjs::runjs("window.location.href = 'https://yoursubdomain.shinyapps.io/yourapp';")
})
在ui.R中
actionButton("reset_button", "Restart", icon = icon("undo"), class = "btn-info"))
但它也不起作用。而且我想在这种多界面的情况下,重定向到主页的按钮比退出按钮更容易。
你能帮助我吗?有谁知道怎么做?