ZF: GET дублирование параметров - PullRequest
2 голосов
/ 25 марта 2011

Как дополнение к ZF: как проверить запрос GET? .

У меня есть два поля ввода и один флажок.Форма стандартная.

public function init()
{
    $this->setMethod('GET');

    $new = new Zend_Form_Element_Checkbox('new');
    $new->setLabel('New')
        ->setOrder(3);

    $app = new Zend_Form_Element_Select('app');
    $app->setLabel('System')
          ->setOrder(2)
          ->setRequired()
          ->addMultiOptions(array('0' => ' ----------- ') + $applications);

    $cat = new Zend_Form_Element_Select('cat');
    $cat->setLabel('Theme')
          ->setOrder(1)
          ->setRequired()
          ->addMultiOptions(array('0' => ' ----------- ') + $categories);

    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setLabel('Search')
          ->setOrder(4);

    $this->addElements(array(
        $cat, $app, $new, $submit
    ));
}

1) Я отправляю, где новый - 0: http://site.com/?cat=0&app=0&new=0

2) Я отправляю, где новый - 1: http://site.com/?cat=0&app=0&new=0&new=1

Почему в новом поле есть дублирование?Было бы хорошо, если новый = 0 отсутствует, если новый = 1

Ответы [ 2 ]

5 голосов
/ 25 марта 2011

Я думаю, это потому, что Zend_From создает скрытое поле ввода рядом с вашим флажком. Это происходит потому, что когда флажок не установлен, по определению никакое значение, связанное с флажком, не отправляется на сервер. Таким образом, Zend_Form создает скрытое поле для отправки чего-либо, если флажок снят. Однако недостатком является то, что, когда флажок установлен, отправляются два значения, то есть скрытое и фактическое значение флажка.

2 голосов
/ 26 марта 2011

Почему тебя это волнует? Должно работать просто отлично?

Если вы по каким-либо причинам заботитесь, вы можете создать My_View_Helper_MyCheckbox, который не будет создавать скрытый элемент, и назначить его (легко, без перетаскивания с префиксами zend_view_helper) следующим образом:

$decorators = $form->new->getDecorators();
//see which key is ViewHelper and assing it to $key variable
$decorators[$key] = new My_View_Helper_MyCheckbox();
$form->new->setDecorators($decorators);

Но учтите, что это может привести к некоторым осложнениям - например, флажок может не проверять непроверенное состояние и многие другие недостатки, о которых вы даже не можете думать прямо сейчас. Так что считай с умом;)

Надеюсь, это поможет;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...