简单的问题,但还没有解决方案。我们知道
<?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
,因此网址比“长字段名称”更容易理解
任何人都知道如何处理这个问题?
答案 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>