如何保存多个下拉列表yii2

时间:2018-06-20 18:18:28

标签: drop-down-menu yii2

我正在尝试从下拉列表中保存多个数据,我在表Asistencia中有2个表Asistencia和Mecanico,我在_form中有此表

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using Microsoft.Extensions.Options;

namespace CHS.SkyApiAuthCodeFlow
{

/// <summary>
/// Contains business logic and helper methods that interact with the authentication provider.
/// </summary>
public class AuthenticationService : IAuthenticationService
{   

    private readonly IOptions<AppSettings> _appSettings;
    private ISessionService _sessionService;

    public AuthenticationService(IOptions<AppSettings> appSettings, ISessionService sessionService)
    {
        _appSettings = appSettings;
        _sessionService = sessionService;
    }


    /// <summary>
    /// Fetches access/refresh tokens from the provider.
    /// <param name="requestBody">Key-value attributes to be sent with the request.</param>
    /// <returns>The response from the provider.</returns>
    /// </summary>
    private HttpResponseMessage FetchTokens(Dictionary<string, string> requestBody) 
    {
        using (HttpClient client = new HttpClient()) 
        {   
            // Build token endpoint URL.
            string url = new Uri(new Uri(_appSettings.Value.AuthBaseUri), "token").ToString();

            // Set request headers.
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
            client.DefaultRequestHeaders.TryAddWithoutValidation(
                "Authorization", "Basic " + Base64Encode(_appSettings.Value.AuthClientId + ":" + _appSettings.Value.AuthClientSecret));

            // Fetch tokens from auth server.
            HttpResponseMessage response = client.PostAsync(url, new FormUrlEncodedContent(requestBody)).Result;

            // Save the access/refresh tokens in the Session.
            _sessionService.SetTokens(response);

            return response;
        }
    }


    /// <summary>
    /// Fetches a new set of access/refresh tokens (from an authorization code).
    /// <param name="code">The authorization code contained within the provider's authorization response.</param>
    /// </summary>
    public HttpResponseMessage ExchangeCodeForAccessToken(string code)
    {
        return FetchTokens(new Dictionary<string, string>(){
            { "code", code },
            { "grant_type", "authorization_code" },
            { "redirect_uri", _appSettings.Value.AuthRedirectUri }
        });
    }


    /// <summary>
    /// Refreshes the expired access token (from the refresh token stored in the session).
    /// </summary>
    public HttpResponseMessage RefreshAccessToken()
    {
        return FetchTokens(new Dictionary<string, string>(){
            { "grant_type", "refresh_token" },
            { "refresh_token", _sessionService.GetRefreshToken() }
        });
    }


    /// <summary>
    /// Builds and returns a string representative of the provider's authorization URI.
    /// </summary>
    public Uri GetAuthorizationUri()
    {
        return new Uri(
            new Uri(_appSettings.Value.AuthBaseUri), "authorization" +
            "?client_id=" + _appSettings.Value.AuthClientId +
            "&response_type=code" + 
            "&redirect_uri=" + _appSettings.Value.AuthRedirectUri
        );
    }


    /// <summary>
    /// Determines if the session contains an access token.
    /// </summary>
    public bool IsAuthenticated()
    {
        return (_sessionService.GetAccessToken() != null);
    }


    /// <summary>
    /// Destroys the access/refresh tokens stored in the session.
    /// </summary>
    public void LogOut()
    {
        _sessionService.ClearTokens();
    }


    /// <summary>
    /// Encodes a string as Base64.
    /// </summary>
    private static string Base64Encode(string plainText) 
    {
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(plainText);
        return System.Convert.ToBase64String(bytes);
    }
}
}

我知道是否要保存多个数据,我必须在控制器-> actionCreate / Update中进行更改,但我不知道如何。这是我的actionCreate

a$FAIL<-ifelse(a$OPERATION_STATUS %in% "FAIL", 1, 0)
cc<-as.data.frame((table(a$CRIT_CODE))) #Dataframe with frequency  of each crit code
cf<-aggregate(FAIL~CRIT_CODE,a,sum) #Total number of fails based  on crit codes
(cc<-cbind(cc[,],cf[,2]))
names(cc)<-c("CRIT_CODE", "Freq", "FAIL") #Change column names
(cc<-transform(cc, Percent=FAIL/Freq*100))

last30<-a[which(a$DATE>=(Sys.Date()-30)),]
last<-as.data.frame((table(last30$CRIT_CODE))) #Dataframe with frequency of each crit code
lastfails<-aggregate(FAIL~CRIT_CODE,last30,sum) #Total number of fails based on crit codes
(last<-cbind(last[,],lastfails[,2]))
names(last)<-c("CRIT_CODE", "Freq", "FAIL") #Change column names
(last<-transform(last, Percent=FAIL/Freq*100))

rates<-merge(critcode[,c(1,4)], last[,c(1,4)], by="CRIT_CODE")
rates$Percent.x<-round(rates$Percent.x, 2)
rates$Percent.y<-round(rates$Percent.y, 2)
library(gridExtra)
grid.table(rates, cols=c("Area", "Overall Percent", "30 Day Percent"))

我需要样本控制器代码,说明如何将多个项目从下拉列表保存到数据库,以及更新已保存项目的列表。谢谢。

这是我的Asistencia桌子 Asistencia table

梅卡尼科表 Mecanico table

与那两个表的关系 enter image description here

0 个答案:

没有答案