Yii2,表格和字段名称

时间:2016-06-08 20:54:41

标签: php forms yii2 yii2-model yii2-validation

简单的问题,但还没有解决方案。我们知道

<?php $form = ActiveForm::begin(['method'=>'get']); ?>
<?= $form->field($formFilter, 'keyword')
            ->textInput(['placeholder' => \Yii::t('', 'keyword')]); ?>
...

将创建简单的表单和输入字段。当然,我们将像

一样加载$ _POST数据
if ($this->isPost() && $formFilter->load($this->post())) {
        if ($formFilter->validate()) {
...

如果我们查看$ _POST,我们会看到像FormFilter[keyword]这样的字段名称。所以问题是,我该如何改变呢?我需要(我认为)以某种方式改变形式\ model而不是视图,因为我们需要正确加载。

它将在何处使用?任何GET表单都会显示带有类名的丑陋网址,例如使用简单的操作和模型,我们会得到FormFilter[keyword],但我想将其更改为keyword,因此网址比“长字段名称”更容易理解

任何人都知道如何处理这个问题?

2 个答案:

答案 0 :(得分:2)

对不起,后来我找到了解决方案,我认为这不仅对我有帮助......

简单的方法是在我们的表单/模型中重新定义formName()方法。使用formName()我们甚至可以根据需要更改它,或者根本设置这样的

public function formName()
{
    return '';
}

因此,如果forName()返回空字符串,我们将获得url:

http://site/items?keyword=&locationID=&employmentType=&educationLevel=&salaryMin=

默认值为:

http://site/items?FormVacanciesFilter[keyword]=&FormVacanciesFilter[locationID]=6&FormVacanciesFilter[employmentType]=&FormVacanciesFilter[educationLevel]=&FormVacanciesFilter[salaryMin]=

答案 1 :(得分:0)

您可以更改视图中的每个字段,例如我有一个基于 yii\base\DynamicModel 的表单,我需要在其中控制字段名称,例如:

echo $form->field($model, 'test')->hiddenInput(['name' => 'test'])->label(false);

将输出:

<div class="form-group field-dynamicmodel-test">
<input type="hidden" id="dynamicmodel-test" class="form-control" name="test" value="{value of $model->test}">
<p class="help-block help-block-error"></p>
</div>