1

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

<?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]字段名称的内容。所以问题是,我怎样才能改变它?我需要(我认为)以某种方式改变表单\模型而不是视图,因为我们需要正确加载。

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

有谁知道如何处理这个问题?

4

2 回答 2

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]=
于 2016-06-08T21:03:19.277 回答
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>
于 2021-03-10T20:49:29.070 回答