通过删除空的 GET 变量和简化变量名称来缩短 URL

2022-01-04 00:00:00 forms get php yii

我在一个网站上工作,在该网站上提交了一个 GET 表单 后会组成一个 URL.表单值作为一组变量传递,必须至少定义一个变量才能使数据库搜索工作.我想通过删除空表单元素来缩短 URL,并通过简化变量名称使其更加用户友好.

I am working on a website where an URL is composed after submitting a GET form. The form values are passed as an array of variables of which at least one must be defined for the search on the database to work. I would like to shorten the URL by removing the empty form elements and to make it more user-friendly by simplifying the variable names.

目前,URL 看起来像这样(只是有更多的变量):

At the moment, the URL looks like this (just with a lot more variables):

http://localhost/example/search?FormName[name]=lorem+ipsum&FormName[id]=&FormName[age]=&yt0=Search

我的目标是让它看起来像这样:

I aim to make it look like this:

http://localhost/example/search?name=lorem+ipsum

为了做到这一点,我有以下问题:

In order to do this, I’ve got the following questions:

  • 我了解到,在使用 GET 方法时,仅使用 PHP 无法删除空表单元素,因为这是 html 表单的标准行为.有没有办法用 yii 的 urlManager 来做到这一点?

我可以将FormName[name]"替换为name"之类的更短的内容而不更改变量名称,例如使用正则表达式?

Can I replace "FormName[name]" with something shorter like "name" without changing the variable name, e.g., with regular expressions?

任何帮助将不胜感激.

推荐答案

简单的方法,如果 jQuery 是一个选项:

Simple method, if jQuery is an option:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
    (function($) {
        $('form').submit(function() { // ## Clean GET on Submit
            $('form input').each(function() { // ## Check each Input
                if ($(this).val().length == 0) { // ## If Empty
                    $(this).attr('disabled', true); // ## Disable Input
                }
            });
        });
    })(jQuery);
</script>

相关文章