检查Shiny输入并在侧栏布局上生成警告

时间:2018-04-16 07:51:40

标签: r shiny

我正在尝试创建一个闪亮的应用程序来检查边栏中提供的电子邮件是否有效(在我的情况下,我直接对API进行身份验证,但在下面的代码中我只是创建一个玩具示例)。我知道我可以使用validateneed(已经阅读主题here上的闪亮网站)为输入生成警告和错误,但在大多数示例中,错误和警告显示在mainPanel()生成情节或类似内容时。{/ p>

在我的例子中,主要布局只是静态文本。我想要实现的很简单:用户输入我检查的电子邮件,如果不符合我生成一些警告/错误但是显示某处除了{{1因为在我的情况下,没有动态mainPanel()

下面是我想要实现的一个例子。

mainPanel

知道怎么做到这一点?错误可以显示在library(shiny) ui <- fluidPage( # Sidebar with a slider input for number of bins sidebarLayout( sidebarPanel( textInput("email", "Email") ), mainPanel() ) ) # Define server logic required to draw a histogram server <- function(input, output) { output$email <- renderUI({ validate(need(input$email == "", "Introduce your email")) validate(need(grep("gmail", input$email, value = TRUE)), "Your email is not valid") }) } # Run the application shinyApp(ui = ui, server = server) 上的任何位置。

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,我不是百分百确定,下面你做了什么?如果未满足您指定的条件之一,它会在侧栏中显示文本消息。

希望这有帮助!

library(shiny)
ui <- fluidPage(
  # Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel(
      textInput("email", "Email"),
      uiOutput('email_text')
    ),
    mainPanel()
  )
)

# Define server logic required to draw a histogram
server <- function(input, output) {
  output$email_text <-
    renderUI({
      if(input$email == ""){
        return(p("Please add your gmail e-mail address."))
      }

      if(!grepl("gmail", input$email)){
        return(p("Your email is not a gmail e-mail address!"))
      }

    })
}

# Run the application 
shinyApp(ui = ui, server = server)