获取Symfony中提交输入的name的动态值


Get the dynamic value of name of the submit input in Symfony

我有一个搜索字段和提交按钮。我想做的是当按钮被点击,搜索字段的名称的值被发送到控制器。问题是名称是动态的,如name="select-{{variable}}"。没有{{变量}},我可以很容易地得到它,但随着它的变化,我不知道如何得到它。请给个提示。代码:

            <form class="form-inline" method="post">
            <div class="form-group">
                <input type="text" class="form-control" name="select-{{ variable }}" placeholder="Search" />
            </div>
            <div class="form-group">
                <button class="btn btn-success" id="btn" type="submit">Submit</button>
            </div>
        </form>

可能:

<input type="text" name="select[1]" />
<input type="text" name="select[2]" />
<input type="text" name="select[3]" />
Php

foreach($_POST['select'] as $key => $value) {
    echo "text $key = $value";
}

如果你想在PHP中轻松获取它们的值,只需将它们命名为"name[]"。

<input type="text" name="input[]" />
php

foreach($_POST['input'] as $value) {
  // do what you want with the $value
}

希望有帮助

我对这个网站从来都不满意。每次我问问题,人们忽视我

你问这个问题才不到一个小时,耐心点…

你想要达到的目标有点不清楚,也许有更简单的方法来完成工作。但是我已经尽力解决你的问题了:

替代1

也许您可以在提交表单之前设置输入名称?在AngularJS中,你可以通过ng-click="来指定函数。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<html>
    <body ng-app="app" ng-controller="ctrl">
    
        <form class="form-inline" method="post">
            <div class="form-group">
                <input type="text" name="form_name" placegolder="form-name" ng-model="variable"/>
                <input type="text" name="{{name_variable}}" placeholder="My Name is: {{name_variable}}" />
            </div>
            <div class="form-group">
                <button class="btn btn-success" ng-click="submit()">Submit</button>
            </div>
    
            <script>
                var app = angular.module('app', []);
    
                app.controller('ctrl', function($scope) {
                    $scope.variable = '';
    
                    // Submit function
                    $scope.submit = function() {
                        $scope.name_variable = 'select-' + $scope.variable;
                        alert('Input Name: ' + $scope.name_variable);
                    }
                });
            </script>
    
    </body>
    </html>

替代2

如果你需要在"variable"发生变化时动态更新表单名称,那么你可以使用$watch方法在每次"variable"发生变化时为"name_variable"赋一个新值:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</head>
<body ng-app="app" ng-controller="ctrl">
    <form class="form-inline" method="post">
        <div class="form-group">
            <input type="text" name="form_name" placegolder="form-name" ng-model="variable"/>
            <input type="text" name="{{name_variable}}" placeholder="My name is: {{name_variable}}" />
        </div>
        <div class="form-group">
            <button class="btn btn-success" ng-click="submit()">Submit</button>
        </div>
        <script>
            var app = angular.module('app', []);
            app.controller('ctrl', function($scope) {
                $scope.variable = '';
                // Watch the var "variable" for change and update "name_variable"
                $scope.$watch('variable',
                        function(newValue, oldValue) {
                            $scope.name_variable = 'select-' + newValue;
                        });
                // Submit function
                $scope.submit = function() {
                    alert('Input Name: ' + $scope.name_variable);
                }
            });
        </script>
</body>
</html>