0

エンティティの編集フォームがあります。要素があります

          $feedback = new FeedbackViewer('Feedback');
    $feedback->setLabel('Feedback')->setRequired(false);
    $feedback->setPostId($this->testimonialId);
    $feedback->setAppId($this->config->testimonials->appId);
    $feedback->setIgnore(true);
    $this->addElement($feedback);

このフィードバックビューアは、フォーム内にフィードバックを表示する別のzfデータグリッドをiframeにロードします。このフォームをZFデータグリッドで使用します

$entityId = $this->getRequest()->getParam('edit');
        if ($entityId) {
            $entityForm = call_user_func($formCallback, $entityId);
            $form->setUsePreDefinedFormElements(true);
            $form->setForm($entityForm);
        }

ただし、アクションを保存した後のZFデータグリッドはエラーをトリガーします検証に失敗しました。フィードバック要素を削除すると、正しく保存されます。助言がありますか?

4

1 に答える 1

0
 $grid->setForm($form);
                if($action != 'show') {
                $form->getForm()->getElement('form_reset')->setLabel(null);
                $form->getForm()->getElement('form_submit')->setLabel(null);

                $gridParam = $this->getRequest()->getParam('grid');
                $startParam = $this->getRequest()->getParam('start');


                if ($gridParam) {
                        if ($gridParam == 'all') {
                                $gridParam = 'index';
                        }

                        // Attach to event listener custom redirect action
                        $grid->listenEvent('crud.after_update', array($this, 'setGridRedirectCallback'), array('action' => $gridParam, 'page' => $startParam));
                        $grid->listenEvent('crud.after_delete', array($this, 'setGridRedirectCallback'), array('action' => $gridParam));
                        $form->getForm()->getElement('form_reset')->setAttribs(array('onclick' => 'window.location.href = "/admin/' . $gridParam . (($startParam) ? '/start/' . $startParam : '') . '";'));
                }

これをIfタグに入れることでこの問題を解決しましたが、より良い解決策を見つけることができませんでした。

于 2012-08-23T14:33:54.133 に答える