2

Zendtalk.urlパラメータの値として非表示のフォームフィールドを設定する必要があります。私は持っています:

class Form_Custom extends Zend_Form
{
  public function init()
  {
   [..] 
   $id = new Zend_Form_Element_Hidden('name');
   [..]
  }
}

クラスをインスタンス化するときに、オプションの配列内で(コントローラーから)それを渡すことができることは知っていますが、URLパラメーター自体を探すようにフォームに指示するにはどうすればよいですか?

ありがとう

ルカ

4

3 に答える 3

4
class Form_Custom extends Zend_Form
{
  public function init()
  {
   //[..] 
   $id = new Zend_Form_Element_Hidden('name');
   //[..]
   $this->fill();
  }

  public function fill()
  {
      $this->name->setValue( Zend_Controller_Front::getInstance()->getRequest()->getParam( 'name', null ) );
  }
}

上記の構造を使用すると、フォームの作成時にフィールドにデータを入力できます。また、コントローラーから$ form-> fill()を手動で使用することもできます。

于 2011-06-01T12:55:25.040 に答える
1

非表示フィールドにURL値を渡したい場合は、次の方法を使用できます。

コントローラ内:

    // Get wanted value from url
    $var = $this->_request->getParam('url');

    // Get correct form using Formloader helper (or any other method that you might be using)
    $this->view->form = $this->_helper->FormLoader('formname', array('url'=> $var);

そして、あなたのフォームに以下を追加します:

protected $_url;

public function init(){
    $url = $this->_url;

    /*rest of your form*/
}

public function setUrl($value){
    $this->_url = $value;
}

それでおしまい!フォームに$url変数を非表示フィールドに渡すだけで、すべて完了します:)

于 2011-06-01T12:03:14.560 に答える
0

Zend_formがコントローラーから分離されているため、これを行う方法はないと思います。レジストリにpos/get変数を登録することはできますが、それは汚いです。$ _GET / $_POSTに直接アクセスすることもできます...

または、コントローラーで次のことができます。

$form = new Zend_form();
$form->populate($this->_getAllParams());

これにより、フォームに$ _POST / $_GETのすべての値が入力されます

于 2011-06-02T06:42:02.997 に答える