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

时间:2016-11-12 08:20:23

标签: php symfony request twig submit

我有一个搜索字段和提交按钮。我想要做的是当单击按钮时,搜索字段的名称值将发送到控制器。问题是名称是动态的,如此名称=“select - {{variable}}”。 没有{{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>

2 个答案:

答案 0 :(得分:1)

也许:

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

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 :(得分:0)

  

我从未对本网站感到满意。每次我问   问题,人们不理我

不到一个小时前你问了这个问题,请耐心等等。

有点不清楚你想要实现什么,也许有更简单的方法来完成工作。但我试图解决你的问题:

备选方案1

也许您可以在提交表单之前设置输入名称?使用AngularJS,您可以在使用ng-click =&#34;&#34;指定的函数中执行此操作。

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

备选方案2

如果您需要尽快动态更新表单名称&#34;变量&#34;更改,然后您可以使用$ watch方法将新值分配给&#34; name_variable&#34;每次&#34;变量&#34;变化:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;