精华内容
下载资源
问答
  • laravel-admin 自定义action
    千次阅读
    2020-04-30 17:31:00

    laravel-admin extension

    研究源码之后复写源码
    在我使用这个框架的时候,没有看到 modal 弹窗使用 自定义的html;

    在我做出来这个插件不久, laravel-admin 1.8 更新了modal弹窗自定义,就不需要用这个插件了

    composer require liaosp/laravel-admin-ext-rowaction
    

    image

    在这里插入图片描述

    在 Action中改成继承这个类

    use Liaosp\RowAction\Actions\RowAction;
    

    使用:

    public function form($model){
     $html = "<div>自定义html</div>"; $this->diy($html);
     }
    

    和我做朋友?

    更多相关内容
  • Android自定义action与permission的方法教程 pdf
  • 1. 自定义ActionProvider 2. Toolbar ActionBar自定义Menu 3. Toolbar ActionBar 右侧Menu添加角标(Toolbar ActionBar Menu添加小红点) 源代码在文章末尾。 ————————————————————————...
  • 下面小编就为大家带来一篇使用jquery提交form表单并自定义action的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 自定义action sheet效果库.zipIOS应用例子源码下载自定义action sheet效果库.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
  • 下面小编就为大家带来一篇使用jquery提交form表单并自定义action的实现代码。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了thinkphp3.x自定义Action、Model及View的简单实现方法,结合实例形式详细分析了thinkPHP3.x自定义模型、视图及控制器的具体步骤与相关实现技巧,需要的朋友可以参考下
  • Django之DRF自定义action

    千次阅读 2020-07-21 17:53:55
    一、自定义action 使用action装饰器 methods,支持的请求方式,为一个列表,默认为[‘get’] detail,必传参数,要处理的是否是详情资源对象(即是否通过url路径获取主键),True表示需要传递主键id,使用通过URL...

    一、自定义action

    • 使用action装饰器
    • methods,支持的请求方式,为一个列表,默认为[‘get’]
    • detail,必传参数,要处理的是否是详情资源对象(即是否通过url路径获取主键),True表示需要传递主键id,使用通过URL获取的主键对应的数据对象,False表示不需要传递主键id,不使用URL获取主键
    • url_path,指定url路由名称,默认为action名称
    • url_name,指定url的名称,默认为action名称

    action源码:

    def action(methods=None, detail=None, url_path=None, url_name=None, **kwargs):
        """
        Mark a ViewSet method as a routable action.
    
        `@action`-decorated functions will be endowed with a `mapping` property,
        a `MethodMapper` that can be used to add additional method-based behaviors
        on the routed action.
    
        :param methods: A list of HTTP method names this action responds to.
                        Defaults to GET only.
        :param detail: Required. Determines whether this action applies to
                       instance/detail requests or collection/list requests.
        :param url_path: Define the URL segment for this action. Defaults to the
                         name of the method decorated.
        :param url_name: Define the internal (`reverse`) URL name for this action.
                         Defaults to the name of the method decorated with underscores
                         replaced with dashes.
        :param kwargs: Additional properties to set on the view.  This can be used
                       to override viewset-level *_classes settings, equivalent to
                       how the `@renderer_classes` etc. decorators work for function-
                       based API views.
        """
        methods = ['get'] if (methods is None) else methods
        methods = [method.lower() for method in methods]
    
        assert detail is not None, (
            "@action() missing required argument: 'detail'"
        )
    
        # name and suffix are mutually exclusive
        if 'name' in kwargs and 'suffix' in kwargs:
            raise TypeError("`name` and `suffix` are mutually exclusive arguments.")
    
        def decorator(func):
            func.mapping = MethodMapper(func, methods)
    
            func.detail = detail
            func.url_path = url_path if url_path else func.__name__
            func.url_name = url_name if url_name else func.__name__.replace('_', '-')
    
            # These kwargs will end up being passed to `ViewSet.as_view()` within
            # the router, which eventually delegates to Django's CBV `View`,
            # which assigns them as instance attributes for each request.
            func.kwargs = kwargs
    
            # Set descriptive arguments for viewsets
            if 'name' not in kwargs and 'suffix' not in kwargs:
                func.kwargs['name'] = pretty_name(func.__name__)
            func.kwargs['description'] = func.__doc__ or None
    
            return func
        return decorator
    

    二、使用方法

    1.引入action

    from rest_framework.decorators import action
    

    2.新定义一个序列化器类

    from rest_framework import serializers
    from .models import Project
    
    class ProjectsNamesModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = Project
            fields = ('id', 'name')
    

    3.自定义action方法,在views中
    使用装饰器@action(),传入methods和detail等参数值

        @action(methods=['get'], detail=False)
        def names(self, request):
            qs = self.filter_queryset(self.get_queryset())
            page = self.paginate_queryset(qs)
            if page:
                serializer_obj = self.get_serializer(instance=page, many=True)
                return self.get_paginated_response(serializer_obj.data)
            serializer_obj = self.get_serializer(instance=qs, many=True)
            return Response(serializer_obj.data)
    

    4.在新建的视图类中重写get_serializer_class方法
    使用self.action可以获取到传入的action,因此可以使用if判断来满足特定条件下返回不同的序列化器类

        def get_serializer_class(self):
            if self.action == 'names':
                return ProjectsNamesModelSerializer
            else:
                return self.serializer_class
    

    5.新建的视图类完整代码:

    class ProjectsViewSet(viewsets.ModelViewSet):
        queryset = Project.objects.all()
        serializer_class = ProjectsModelSerializer
    
        @action(methods=['get'], detail=False)
        def names(self, request):
            qs = self.filter_queryset(self.get_queryset())
            page = self.paginate_queryset(qs)
            if page:
                serializer_obj = self.get_serializer(instance=page, many=True)
                return self.get_paginated_response(serializer_obj.data)
            serializer_obj = self.get_serializer(instance=qs, many=True)
            return Response(serializer_obj.data)
    
        def get_serializer_class(self):
            if self.action == 'names':
                return ProjectsNamesModelSerializer
            else:
                return self.serializer_class
    

    6.配置路由信息

    urlpatterns = [
        path('projects/names/',ProjectsViewSet.as_view(
            {'get':'names'}
        ))
    ]
    

    6.验证结果
    在这里插入图片描述

    三、从表关联

    指定获取某个项目下对应的从表的id和name?

    1.定义序列化器类,为了方便查看,直接将Interfaces的序列化器类定义在当前的serializers.py中

    from rest_framework import serializers
    from interfaces.models import Interfaces
    from .models import Project
    
    
    class InterfacesNamesModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = Interfaces
            fields = ('id', 'name')
    
    
    class InterfacesByProjectIdModelSerializer(serializers.ModelSerializer):
        interfaces = InterfacesNamesModelSerializer(many=True, read_only=True)
    
        class Meta:
            model = Project
            fields = ('interfaces',)
    
    

    2.自定义action方法

        @action(detail=True)
        def interfaces(self, request, *args, **kwargs):
            instance = self.get_object()
            serializer_obj = self.get_serializer(instance=instance)
            return Response(serializer_obj.data)
    

    3.重写get_serializer_class方法

        def get_serializer_class(self):
            if self.action == 'names':
                return ProjectsNamesModelSerializer
            elif self.action == 'interfaces':
                return InterfacesByProjectIdModelSerializer
            else:
                return self.serializer_class
    

    4.完整代码

    class ProjectsViewSet(viewsets.ModelViewSet):
        queryset = Project.objects.all()
        serializer_class = ProjectsModelSerializer
    
        @action(detail=True)
        def interfaces(self, request, *args, **kwargs):
            instance = self.get_object()
            serializer_obj = self.get_serializer(instance=instance)
            return Response(serializer_obj.data)
    
        def get_serializer_class(self):
            if self.action == 'names':
                return ProjectsNamesModelSerializer
            elif self.action == 'interfaces':
                return InterfacesByProjectIdModelSerializer
            else:
                return self.serializer_class
    

    5.配置路由信息

    urlpatterns = [
        path('projects/<int:pk>/interfaces/', ProjectsViewSet.as_view(
            {'get': 'interfaces'}
        )),
    ]
    
    

    6.结果显示:
    在这里插入图片描述

    展开全文
  • struts2自定义Action实现Action接口(实现简单登录功能)
  • IOS应用源码——自定义action sheet效果库.zip
  • IOS应用源码——自定义action sheet效果库.rar
  • 该接口主要实现在流程的流转当中,实时通过自定义的动作去操作异构形体系统的数据或者是其他一些特定的操作。 在流程的每个出口或者节点都可以定义这样的自定义动作,从而实现在流程流转过程导入,导出流程的相关...

    该接口主要实现在流程的流转当中,实时通过自定义的动作去操作异构形体系统的数据或者是其他一些特定的操作。 在流程的每个出口或者节点都可以定义这样的自定义动作,从而实现在流程流转过程导入,导出流程的相关信息,或者将流程信息和其他应用相结合进行数据交互。

    编写Action

    新建Action实现类必须实现接口weaver.interfaces.workflow.action方法public String execute(RequestInfo request)

    package weaver.interfaces.workflow.action;
    
    import weaver.general.BaseBean;
    import weaver.soa.workflow.request.DetailTableInfo;
    import weaver.soa.workflow.request.MainTableInfo;
    import weaver.soa.workflow.request.Property;
    import weaver.soa.workflow.request.RequestInfo;
    
    public class TestAction extends BaseBean implements Action {
    
        public String p1; //自定义参数1
        public String p2; //自定义参数2
    
        public String execute(RequestInfo requestinfo) {
            System.out.println("进入Action requestid="+requestinfo.getRequestid());
            String requestid = requestinfo.getRequestid();//请求ID
            String requestlevel = requestinfo.getRequestlevel();//请求紧急程度
            String src = requestinfo.getRequestManager().getSrc();
            //当前操作类型 submit:提交/reject:退回
            String workflowid = requestinfo.getWorkflowid();//流程ID
            String tablename = requestinfo.getRequestManager().getBillTableName();//表单名称
            int billid = requestinfo.getRequestManager().getBillid();//表单数据ID
            User usr = requestinfo.getRequestManager().getUser();//获取当前操作用户对象
            String requestname = requestinfo.getRequestManager().getRequestname();//请求标题
            String remark = requestinfo.getRequestManager().getRemark();//当前用户提交时的签字意见
            int formid = requestinfo.getRequestManager().getFormid();//表单ID
            int isbill = requestinfo.getRequestManager().getIsbill();//是否是自定义表单
            //取主表数据
            Property[] properties = request.getMainTableInfo().getProperty();// 获取表单主字段信息
            for (int i = 0; i < properties.length; i++) {
                String name = properties[i].getName();// 主字段名称
                String value = Util.null2String(properties[i].getValue());// 主字段对应的值
                System.out.println(name + " " + value);
            }
            //取明细数据
            DetailTable[] detailtable = request.getDetailTableInfo().getDetailTable();// 获取所有明细表
            if (detailtable.length > 0) {
                for (int i = 0; i < detailtable.length; i++) {
                    DetailTable dt = detailtable[i];// 指定明细表
                    Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储
                    for (int j = 0; j < s.length; j++) {
                        Row r = s[j];// 指定行
                        Cell c[] = r.getCell();// 每行数据再按列存储
                        for (int k = 0; k < c.length; k++) {
                            Cell c1 = c[k];// 指定列
                            String name = c1.getName();// 明细字段名称
                            String value = c1.getValue();// 明细字段的值
                            System.out.println(name + " " + value);
                        }
                    }
                }
            }
            //控制流程流转,增加以下两行,流程不会向下流转,表单上显示返回的自定义错误信息
            requestinfo.getRequestManager().setMessagecontent("返回自定义的错误信息");
            requestinfo.getRequestManager().setMessageid("错误信息编号");
    
            System.out.println("Action执行完成 传入参数p1="+this.getP1()+"  p2="+this.getP2());
    
            return SUCCESS ;//return返回固定返回`SUCCESS`
        }
        public String getP1() {
            return p1;
        }
        public void setP1(String p1) {
            this.p1 = p1;
        }
        public String getP2() {
            return p2;
        }
        public void setP2(String p2) {
            this.p2 = p2;
        }
    
    
    }
    

     

    注册Action

    进入后端引擎->集成中心->流程流转集成 

    一个Action只要注册一次就可以。注册后可以在节点或者出口的附加操作中使用

     

     

    配置Action

     

    选择注册的Action,然后点击保存外部接口进行数据保存

     

    Action示例

    某个客户的回调SAP数据 调用接口的Action

     

    package weaver.interfaces.workflow.action;
    
    import weaver.conn.RecordSet;
    import weaver.general.BaseBean;
    import weaver.general.TimeUtil;
    import weaver.general.Util;
    import weaver.soa.workflow.request.RequestInfo;
    import weaver.system.SapWebserviceClient;
    
    public class CallBackSapFor319Action extends BaseBean implements Action {
    
        private final static String joinstring = "|";
        public String execute(RequestInfo request) {
            String requestid = request.getRequestid() ;
            String tablename = request.getRequestManager().getBillTableName() ;
            String src = request.getRequestManager().getSrc() ;
            String workflowid = request.getWorkflowid() ;
            //读取配置的设置
            String projectfieldname = Util.null2String(getPropValue("SAPAjax","sapprj319fieldname"));//项目编号
            String ztfieldname = Util.null2String(getPropValue("SAPAjax","zt319fieldname"));//客户    
            SapWebserviceClient sap_api = new SapWebserviceClient();
            String projectid = "";
            String zt = "";
    
            RecordSet rs = new RecordSet();
            rs.executeSql("select "+projectfieldname+","+ztfieldname+"  from "+tablename+" where requestid="+requestid);
            rs.next();
            projectid = Util.null2String(rs.getString(1));
            zt = Util.null2String(rs.getString(2));
    
            if(projectid.equals("")){
                //调用异常 返回错误信息
                request.getRequestManager().setMessageid(System.currentTimeMillis()+"");
                request.getRequestManager().setMessagecontent("项目名称为空,请修改表单重新提交!");
            }else{
                try{
                    sap_api.getPLM09Client(projectid, zt);
                }catch(Exception e){
                    //调用异常 返回错误信息
                    request.getRequestManager().setMessageid(System.currentTimeMillis()+"");
                    request.getRequestManager().setMessagecontent("调用SAP接口9出现异常!"+e.getMessage());
                    writeLog(e);//写日志
                }
            }
            return SUCCESS ;
        }
    
    }
    

    调用外部数据源 

    package weaver.interfaces.workflow.action;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import weaver.general.BaseBean;
    import weaver.general.StaticObj;
    //泛微OA调用外部数据源源代码
    //bw.ren 2019年12月2日16:33:04
    public class DataSourceDemo extends BaseBean {
        public void testDatasource() {
            //此处是取得上文定义的数据源dt1,如果需要操作其他系统的数据才需要该定义
            Connection conn = getConnection("datasource.local");
            try {
                //通过jdbc获取人数
                PreparedStatement s = conn.prepareStatement("select count(*) as counthrm from hrmresource");
                ResultSet rs = s.executeQuery();
                if (rs.next()) {
                    String counthrm = rs.getString("counthrm");
                    //输出到控制台
                    System.out.println("人数:" + counthrm);
                    writeLog("人数:" + counthrm);
                }
                rs.close();//关闭记录集
                s.close();//关闭statement
            } catch (Exception e) {
                writeLog(e);
            } finally {
                try {
                    closeConnection(conn);//关闭连接
                } catch (Exception e) {
                    writeLog(e);
                }
            }
        }
    
        /**
         * 获取自定义datasource的connection
         *
         * @param datasourceid 数据源id,为"datasource"+数据源配置里面的数据源名称,
         *                     比如配置了一个数据源名称为local,那么这个数据源id为:datasource.local
         * @return
         */
        public Connection getConnection(String datasourceid) {
            Connection conn = null;
            try {
                weaver.interfaces.datasource.DataSource datasource = (weaver.interfaces.datasource.DataSource) StaticObj.getServiceByFullname(datasourceid, weaver.interfaces.datasource.DataSource.class);  //获取数据源的信息
                conn = datasource.getConnection(); //和数据源取得连接
            } catch (Exception e) {
    
            }
            return conn;
        }
    
        /**
         * 关闭Connection
         *
         * @param conn
         */
        public void closeConnection(Connection conn) {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    writeLog(e);
                }
            }
        }
    }
    
    
    
    

     

    展开全文
  • ios应用源码之自定义action sheet效果库 .
  • 上篇介绍web api调用自定义action中用到的demo是基于特定的实体,那本篇要分享的是global action,区别在于一个是私有方法一个是公用方法(个人理解的说法)。 如何新建一个action这里就不说了,具体参见上篇,直接看...

          上篇介绍web api调用自定义action中用到的demo是基于特定的实体,那本篇要分享的是global action,区别在于一个是私有方法一个是公用方法(个人理解的说法)。

         如何新建一个action这里就不说了,具体参见上篇,直接看下前端js的调用代码,与上篇的示例代码的区别是request的url的最后部分,global action直接写上action的唯一名称即可,而上篇基于实体的写法是这样的"incidents(03AE5852-6EFA-E511-9417-E2BFEC45B344)/Microsoft.Dynamics.CRM.new_testaction"

    var entity = new Object();  
          entity["Money1"] = 1;  
          entity["Money2"] = 2;  
    var req = new XMLHttpRequest()  
    req.open("post", "http://121.40.75.24:5555/Origin/api/data/v8.0/new_action", false);  
        req.setRequestHeader("Accept", "application/json");  
        req.setRequestHeader("Content-Type", "application/json; charset=utf-8");  
        req.setRequestHeader("OData-MaxVersion", "4.0");  
        req.setRequestHeader("OData-Version", "4.0");  
          
        req.onreadystatechange = function () {  
            if (this.readyState == 4) {  
                if (this.status == 200) {  
                   var result=JSON.parse(this.responseText);  
                }  
                else {  
                      
                }  
            }  
        };  
        req.send(JSON.stringify(entity))
      返回的结果依旧是200,没什么差别


       global action注册的时候是这样的,在entity那块选择空



        global action和基于实体的action还有一个区别在于后端的代码,InputParameters中是否有Target这个参数

        下图是基于实体的action是有Target参数的,带的是实体的相关信息


        下图是global的,是没有Target参数的,这个要区别对待下。

        

    展开全文
  • 使用jquery提交form表单并自定义action

    千次阅读 2018-08-02 17:25:09
    使用jquery提交form表单并自定义action $(function () { $( " #btn " ).click(function () { var usercode = $( " #UserCode " ).val(); var verifycode = $( " #Verifycode " ).val(); if ($.trim...
  • Sheeeeeeeeet是一个用于创建自定义action sheets的Swift库
  • 使用DRF视图集时自定义action方法

    千次阅读 2018-11-11 17:02:00
    这时,我们就需要自定义action方法了。 新增功能后的代码如下: class DepartmentViewSet(ModelViewSet): queryset = Department.objects.all() serializer_class = DepartmentSerializer def ...
  • SourceTree+Gerrit配置自定义Action

    千次阅读 2019-05-23 10:04:39
    1.写运行脚本,命名以.sh为结尾,放到本地路径 #!/bin/sh # push.sh # KeepRunning # 获取当前分支名 branch=`git symbolic-ref --short -q HEAD` ...git push origin HEAD:refs/...2.SourceTress配置Action 3...
  • Django xadmin 后台自定义action 动作

    千次阅读 2018-08-23 15:43:35
    adminx.py from xadmin import views ...# 自定义动作所需 from django import forms, VERSION as django_version from django.core.exceptions import PermissionDenied from django.db import route...
  • Android 自定义action

    2014-04-05 21:49:55
    自定义action的目的,就是界面A发起一个包含action的Intent,界面b响应这个action,进而启动起来。   这样的好处就是只要保持B的intent不变,即使B的类名改变,也不需要更改A的代码,尤其是A、B是2个应用程序...
  • STRUTS2学习(二)——自定义Action及匹配配置 1、摘要 从上面的学习中我们可以看出,struts.xml这个配置文件指明了HttpRequest、namespace、action和result四者之间的映射关系。框架通过读取struts.xml文件中的相关...
  • Activity之间的通信与自定义Action

    千次阅读 2014-08-30 10:47:36
    这个头在你自定义action 的时候需要自己定义  这个头也是在Androidmanifest.xml 中定义  流程:在AndroidManifest.xml 中的被调用的Activity的节点下定义Action 和Uri头,在调用方使用 Intent...
  • 【Android】Android 中自定义Action响应

    千次阅读 2015-04-20 15:32:44
    启动一个Activity 可以通过intent 的setclass方法来指定一个确定的类来跳转到另外一...自定义Action的方法: 1. 定义一个字符串,Action的匹配字符串 `private final static String Intent_Action = "Android_05_actio
  • 一、简介 在启动一个ACTIVITY时,作为信使的Intent主要由三部分构成:...Intent中ACTION的值是双向的,发送方发给接受方中的ACTION值能够被双方了解,这样在发送方中,自定义ACTION的值,在接受方中,Intent-filter
  • QT自定义Action的信号和槽连接问题

    千次阅读 2017-06-12 22:03:20
    最近尝试自学QT,创建一个TableWidget的右键菜单,构建成功,菜单显示成功,但是菜单的自定义槽没有被触发。 部分代码如下: pAction = m_pTableMenu->addAction("删除记录"); connect(pAction, SIGNAL(QAction::...
  • 自定义页面控制器、接口、js、css、模板、放置目录及书写规则
  • tool menu小红点
  • Cocos Creator之自定义Action

    千次阅读 2019-01-27 19:09:07
    Cocos Creator之自定义Action自定义Action特殊需求 - 用TypeScript自定义Action需求方案使用方法 自定义Action 学习自定义Action的最好方法是去查看Cocos Creator中常用动作的写法。比如cc.MoveTo继承了cc.MoveBy,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 347,826
精华内容 139,130
关键字:

自定义action