Home > database >  Print string and reactive object in the same line in shiny app
Print string and reactive object in the same line in shiny app

Time:11-20

Im trying to print text and reactive object in the same line using print() and paste() but it does not work.

# define some credentials
credentials <- data.frame(
  user = c("shiny", "shinymanager"), # mandatory
  password = c("azerty", "12345"), # mandatory
  start = Sys.Date(), # optinal (all others)
  expire = c(NA, "2019-12-31"),
  admin = c(FALSE, TRUE),
  comment = "Simple and secure authentification mechanism 
  for single ‘Shiny’ applications.",
  stringsAsFactors = FALSE
)

library(shiny)
library(shinymanager)

ui <- fluidPage(
  tags$h2("My secure application"),
  uiOutput("auth_output")
)

# Wrap your UI with secure_app
ui <- secure_app(ui)


server <- function(input, output, session) {
  
  # call the server part
  # check_credentials returns a function to authenticate users
  res_auth <- secure_server(
    check_credentials = check_credentials(credentials)
  )
  
  output$auth_output <- renderText({
    print(paste0(h4("Name:"),h4(res_auth$user)))
          
  })
  
  # your classic server logic
  
}

shinyApp(ui, server)

CodePudding user response:

What jumps out to me is renderText is usually paired with verbatimTextOutput. If you want to use uiOutput you should pair it with renderUI in the server code.

That being said, if you are expecting it to display an h4 heading in the UI, you won't get what you expect. h4 returns a shiny.tag object. paste0 will coerce these to characters. You more likely want to create your text then use it to create the h4.

output$auth_output <- renderUI({
    h4(paste0("Name:", res_auth$user))
})
  • Related